首页 > 解决方案 > 在 for 循环中,Println 函数使循环永远循环。为什么会这样?

问题描述

我找到了一些编程练习,但这个没有解决。程序将输入作为整数,然后将您给出的素数的数量相加。我知道代码会失败,但是当我尝试调试它时,如果我运行注释的 println 函数会发现一些有趣的东西,然后循环将永远持续并且永远不会自行终止。有人可以解释为什么吗?

    static void problem11() {//summing prime numbers
    System.out.println("how many numbers do you want?");
    int aim = scanner.nextInt();
    int count = 0;
    int datum = 2;
    int sum = 0;
    while(count<aim) {
        boolean prime = true;
        for(int i=datum-1; i>=2; i--) {
            **//System.out.println("inside for, datum: " + datum);**
            if(datum%i==0)
                **//System.out.println(datum +" is not a prime number");**
                prime = false;
        }
        if(prime) {
            System.out.println("one prime found");
            count++;
            sum += datum;
        }
        datum++;
    }
    System.out.printf("\nSum of first %d prime numbers is: %d", aim, sum);
}

感谢@Andy、@MauricePerry 和@Nevexis。是的,我知道我应该使用大括号,但我正在尝试缩短代码以提高可读性,但作为初学者,我可能会保持安全。

标签: javafor-loopprimesprintln

解决方案


另一个注意事项 - 如果您从字面上取消注释第二个 println (“不是素数......”),由于 if 语句缺少大括号,它会改变逻辑。– Andy 4 小时前 感谢您的帮助,这就是答案。


推荐阅读