我正在创建一个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");
}
}
}
答案 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;
}
}