打破For Loop Java

时间:2013-08-30 04:51:00

标签: java arrays loops for-loop

我这里有这段代码:

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但没有任何作用。有没有人有办法解决吗?非常感谢!

4 个答案:

答案 0 :(得分:5)

您正在使用input.nextInt();两次。这是从ifelse中的控制台读取。

 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);

}

这是检查输入数字的更简单,更简洁的方法。