我的for循环后面的代码没有执行

时间:2016-06-25 21:14:12

标签: java for-loop

我有一个简短的程序,它创建一个整数数组并删除非素数:

public class Main {

  public static void main(String[] args){

    int[] nums = new int[100];
    for (int i = 0; i < nums.length; ++i){
        nums[i] = i + 1;
    }

    int j = 0;
    while(j < nums.length){
        System.out.print(nums[j]);
        System.out.print(" ");
        j++;
    }

    for (int n = 1; n < nums.length / 10; n++){
        for (int p = n; p < nums.length; p += nums[n]){
            if(p > n){
                nums[p] = 0;
                System.out.println("p"+nums[p]);
            }

        }           
    }


    //this code doesn't execute
    System.out.println("x");



  }
}

该声明应该简单地打印&#34; x&#34;不执行,也没有我在for循环后放置的任何其他语句。程序没有进入无限循环,所以发生了什么?我觉得这很明显,我只是缺席了。

编辑:这是一个无限循环,我只是没有意识到。

2 个答案:

答案 0 :(得分:2)

p循环中,在第二次迭代中,p > n为真,您将nums[p]设置为0。从那时起,p将永远不会增加,因为您的增量器为p += nums[n]nums[n]0,因此您的循环永远不会终止。

使用调试器可以最好地解决这类问题。使用调试器是程序员的基本技能。使用调试器,您可以逐步执行语句,检查变量,并准确查看代码的作用。它不是一种先进的技术,从第1天开始就是必不可少的,因此您可以正确地诊断代码中的问题。如果您当前不知道如何使用调试器,请停止正在进行的操作并学会使用调试器,这对您来说非常有价值且省时。几乎可以肯定,ID​​E中内置了一个。

答案 1 :(得分:-1)

你是否陷入无限循环?在控制台中按cmd + c或ctrl + c并查看其功能。如果程序停止,则表示无限循环。