问题描述
import java.util.Scanner; // using the Scanner class located in the "java.util" directory
public class Helloworld {
public static void main(String [] args){
int number =0,count = 0,sum = 0;
int Largest= 0,largestEvennumber = 0;
do {
Scanner console = new Scanner(system.in);
number = console.nextInt();
if (number > Largest) { // Condition for computing the largest number
Largest = number;
}
if (number < 0) { // Condition for computing the number of negative integers in the sequence
count = count + 1;
}
if (number % 2 == 0) { // Condition for computing the largest even integer in the sequence
if (largestEvennumber < number) {
largestEvennumber = number;
}
}
if (number % 3 == 0) { // Condition for computing the sum of numbers divisible by 3
sum += number;
}
}while(number != 0);
System.out.println("\nThe largest integer is " + Largest);
System.out.println("The number of negative integers in the sequence is " + count);
System.out.println("The largest even integer in the sequence is " + largestEvennumber);
System.out.printf("The sum of numbers divisible by 3 is %d",sum);
}
}
output:
1
2
3
-1, -2, -45, 7 -9, 23 67, 900, 0 无输出
Expected output:
1
2
3
-1, -2, -45, 7 -9, 23 67, 900, 0
The largest integer is 900;
The number of negative integers in the sequence is 4;
The largest even integer in the sequence is 900;
The sum of numbers divisible by 3 is 849
当我一一键入输入时,程序正在执行。但是,当我尝试一次“复制粘贴”所有输入时,来自文本编辑器(输入在文本编辑器中的每一行中都分开)没有输出。我认为Scanner类仅读取第一个数字。如何在不创建多个对象且不键入每个数字的情况下更正此问题?
解决方法
您缺少Scanner类的工作方式:
try (Scanner scanner = new Scanner(System.in)) {
while (scanner.hasNextInt()) {
int n = scanner.nextInt();
System.out.println("n=" + n);
}
}
您一直在读取第一个数字:您必须先检查是否会有数字,然后读取为数字,然后重试直到文件结尾。
请注意,使用{-{1}}可能不需要使用try-with-resources关闭扫描程序,但在其他情况下(文件,...)则不需要。