如何使用额外的空白输入来修复Scanner类

时间:2019-03-31 11:25:44

标签: java

import java.util.Scanner;
public class sumAverageUsingArray {

public static void main(String[] args) {
    /**
     * LargestValue
     */
    final int LENGTH = 5;
    int[] values = new int[LENGTH];
    int currentSize = 0;

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter values and Q to Quit");

    while (sc.hasNextInt() && currentSize < values.length) {
        values[currentSize] = sc.nextInt();
        currentSize++;
    }

    sc.close();
    int largest = values[0];

    for (int i = 1; i < currentSize; i++) {

        if (values[i] > largest) {

            largest = values[i];
        }
    }

    System.out.printf("Largest is : %d", largest);
}

预期: 5,4,3,2,1

最大是:5

实际: 6,5,4,3,2,1

最大是:6

Scanner类需要额外的输入,但对程序的行为没有影响,如何解决?

1 个答案:

答案 0 :(得分:3)

替换

while (sc.hasNextInt() && currentSize < values.length) {

作者

while (currentSize < values.length && sc.hasNextInt()) {

hasNextInt()被强制阻塞,直到您输入某些内容才能知道...是否存在下一个int。如果输入int,则可以返回true。如果输入其他内容,则可能返回false。如果您没有输入enything,它需要等到您输入一些东西才能知道返回什么。