扫描仪类别无法识别很多输入?

问题描述

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关闭扫描程序,但在其他情况下(文件,...)则不需要。