Как исправить, что класс Scanner принимает дополнительный пустой ввод

#java

#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() amp;amp; 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. Ваш ввод разделен запятой или пробелом? Потому что в вашем примере вы используете запятую, но ваш код не будет работать должным образом, если вы используете этот ввод.

Ответ №1:

Заменить

 while (sc.hasNextInt() amp;amp; currentSize < values.length) {
  

Автор:

 while (currentSize < values.length amp;amp; sc.hasNextInt()) {
  

hasNextInt() принудительно блокируется до тех пор, пока вы не введете что-либо, чтобы узнать, есть ли … следующий int или нет. Если вы введете значение int, оно может вернуть true. Если вы введете что-то еще, это может вернуть false . Если вы ничего не вводите, ему нужно подождать, пока вы что-то введете, чтобы знать, что возвращать.