Java将计数与用户输入错误进行比较

时间:2015-04-20 20:52:02

标签: java

我正在创建一个while循环来确定if (count == numbers.length)然后循环将会突然出现。每当我运行print语句来查看我出错的地方时,无论我的计数设置如何,我的numbers.length也设置为相同的东西,无论我输入多少数字(如果有的话)。我该如何解决这个错误?

// Create a scanner to read user input
Scanner s = new Scanner(System.in);

// Prompts user to enter the integer count
System.out.print("How many integers would you like to enter: ");
int count = s.nextInt();
s.nextLine();
// s.nextLine() closes the previous scanner reader

while(true) {

   // Prompts user to enter the integer numbers here based on count
   System.out.print("\nEnter your integer numbers here: ");
   int [] numbers = new int[count];
   Scanner numScanner = new Scanner(s.nextLine());

   for (int i = 0; i < count; i++) {
      if (numScanner.hasNextInt()) {
          numbers[i] = numScanner.nextInt();
          if (numbers.length == count) {
            break;
          }
      }
      else {
          System.out.print("Must enter the correct amount of numbers");
      }
   }

}

2 个答案:

答案 0 :(得分:0)

int [] numbers = new int[count];

此行创建一个count大小的整数数组。因此,在初始化数组时,它的大小将等于count。最终,数组中的所有值都将为0.

您可能希望使用List。 e.g:

List<Integer> numbers = new ArrayList<>();
...
numbers.add(numScanner.nextInt());

在必要时打破循环:

if (numbers.size() == count){
    break;
}

答案 1 :(得分:0)

这里有几个问题:

首先,您需要使用i,而不是numbers.length,因为前者将针对输入的每个数字递增,而后者将始终与count相同。< / p>

其次,break不会退出while循环,而只会退出for循环。由于您也希望退出while循环,因此可以使用布尔值而不是while (true),然后将该值设置为false

boolean needInput = true;
while (needInput) {
    ....
    if (i == count) {
        needInput = false;
        break;
    }
}