修复java中的无限循环

时间:2014-09-29 00:27:06

标签: java infinite

我的程序不会停止运行,我不确定我做错了什么。在此先感谢您的帮助!

public static void main(String[] args) {

      Scanner in = new Scanner(System.in);

      ArrayList<NumberOperations> numOpsList = new ArrayList<NumberOperations>();

      System.out.println("Enter a list of positive integers separated "
                        + "with a space followed by 0:");


      int x = in.nextInt(); 

      NumberOperations newNumOp = null;

      while (x != 0) {
         newNumOp = new NumberOperations(x);

         numOpsList.add(newNumOp); 

         int index = 0;

         while (index < numOpsList.size()) {
            NumberOperations num = numOpsList.get(index);
            System.out.println("For: " + num);

            // add print statement for odds under num
            System.out.println("\tOdds Under: " + newNumOp.oddsUnder());

            // add print statement for powers of 2 under num
            System.out.println("\tPowers of 2 under: " + newNumOp.powersTwoUnder());

            index++;
         } 
      }

   }

4 个答案:

答案 0 :(得分:1)

x = in.nextInt();必须在while循环中。

...

int x = -1; 
...

while (x != 0) {

     x = in.nextInt();
     ....
  }

答案 1 :(得分:0)

我认为您应该检查索引而不是x或使用x -

X永远不会被设置为零,这会导致无限循环。

答案 2 :(得分:0)

你有一个永不改变的循环条件x

 While (x != 0){
  // loop code
 }

但是,循环代码不会改变x值。

答案 3 :(得分:-1)

您没有在外部WHILE循环中更新x。