为什么 for 循环在我的 Java 程序中迭代超过给定条件

Why for loop is iterating more than given condition in my Java program

我正在尝试使用 for 循环(迭代次数)查找整数的因式分解,但输出超过指定的循环次数。

我在我的笔记本电脑上写了同样的代码,但它在特定的迭代次数下工作正常,而且没有超过。

public class Test {
    public static void main(String args[]) {
        int n=5;
        for(int a=1; a<=n; a++ ) {
            n=a*n;
            System.out.println(n);
        }
    }
}

输出

5
10
30
120
600
3600
25200
201600
1814400
18144000
199584000
-1899959296

您在循环中更改了 n 的值,因此它迭代了更多次。使用另一个变量来计算循环次数,例如

public class Test {
    public static void main(String args[]) {
        int n=5, counter=5;
        for(int a=1; a<=counter; a++ ) {
            n=a*n;
            System.out.println(n);
        }
    }
}

我猜你正在寻找类似的东西:

1*n = n
2*n = 2n

... ... ...

(n-1)*n = n(n-1)
n*n = n^2

因此,部分结果类似于 a*n,其中 n 是固定的,a 增加 1 直到 n。在您的代码中,您放置了 n=a*n 这意味着您的 n 在每次迭代时都会更新。不要更新 n 的值,即删除包含 n=a*n 的行。实际上,您也不需要 counter 变量。只需将 a*n 的值打印到打印语句中即可。因此,解决方案可能是

public class Test {
    public static void main(String args[]) {
        int n=5;
        for(int a=1; a<=n; a++ ) {
            System.out.println(a*n);
        }
    }
}

//感谢您的回复,在您的帮助下我才能够找出问题所在 //这就是我如何解决限制迭代的问题/

public class Test {
public static void main(String args[]) {
    int n=5;
    int counter=n;

    for(int a=1; a<=counter; a++ ) {
        n=a*n;
    System.out.println(n);
    }
}
}