我这里有这段代码:
Scanner input = new Scanner(System.in);
int array[] = new int[10];
System.out.println("Enter the numbers now.");
for (int i = 0 ; i < array.length; i++ ) {
if (input.nextInt() == 999){
break;
} else {
array[i] = input.nextInt();
}
}
如果用户在阵列中输入999但我到目前为止没有运气,我想打破循环。我尝试使用break或返回false但没有任何作用。有没有人有办法解决吗?非常感谢!
答案 0 :(得分:5)
您正在使用input.nextInt();
两次。这是从if
和else
中的控制台读取。
for (int i = 0 ; i < array.length; i++ ) {
int enteredNumber = input.nextInt();
if (enteredNumber == 999){
break;
} else {
array[i] = enteredNumber ;
}
}
答案 1 :(得分:4)
你在循环中阅读两次。因此,如果您的if
条件是假的(用户未输入999
),那么它将进入else
块,您正在从该区域读取新输入,该输入可能是{ {1}}。
将您的循环更改为:
999
除此之外,你还应该考虑用户实际上没有传递整数的情况,在这种情况下,你的代码会被破坏。您可以使用Scanner#hasNextInt()
方法。
for (int i = 0 ; i < array.length; i++ ) {
int read = input.nextInt();
if (read == 999) {
break;
}
array[i] = read;
}
当然,如果用户继续输入非整数值,那么该循环可能会永远运行。为了克服这个问题,您可以为用户提供最大数量的尝试。我会留给你处理。 (提示:您需要一个从0到最大的计数器。在每次循环迭代时,重置它)。
答案 2 :(得分:2)
您目前拥有的方式是在每次迭代中调用nextInt()
多次次。
这意味着您将丢失数据。假设您首先输入7.这在if
语句中被选为“非999”,因此它会转到else
子句,您要求用户输入另一个号码(你失去了7)。
此外,如果在执行第一次调用nextInt()
时输入999,则只会中断该循环。如果你在执行第二次通话时输入999,它只会存储它并继续运行。
请改为尝试:
for (int i = 0 ; i < array.length; i++ ) {
int next = input.nextInt();
if (next == 999)
break;
array[i] = next;
}
答案 3 :(得分:1)
在你的for循环中尝试这个东西。
for(int i = 0; i&lt; array.length; i ++){
int number = input.nextInt();
if (number == 999){
break;
}
System.out.println("aghsdgha" + number);
}
这是检查输入数字的更简单,更简洁的方法。