Java 打印nxn表时的无限循环

Java 打印nxn表时的无限循环,java,infinite-loop,Java,Infinite Loop,考虑以下Java程序: public class RelativelyPrime { public static void main(String[] args) { int N = Integer.parseInt(args[0]); // Dimensions of grid int i, j; int r; // Remainder when i is divided by j for (i = 1; i <=

考虑以下Java程序:

public class RelativelyPrime {
    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]); // Dimensions of grid
        int i, j;
        int r; // Remainder when i is divided by j

        for (i = 1; i <= N; i++) {
            for (j = 1; j <= N; j++) {
                do { // Using Euclidean algorithm
                   r = i % j;
                   i = j;
                   j = r;
                } while (r > 0);
                if (i == 1) System.out.print("*");
                else System.out.print(" ");
            }
            System.out.println();
        }
    }
}
公共类相对优先{
公共静态void main(字符串[]args){
int N=Integer.parseInt(args[0]);//网格的维度
int i,j;
int r;//i除以j时的余数

对于(i=1;i这就是使用调试器可以帮助您解决问题的地方

在循环内部,你改变了
i
j
,这意味着它们永远不会到达
N
,因此你有一个无限循环


我建议您不要更改这些变量,而是使用两个新变量,最好是有意义的名称。

这就是使用调试器可以帮助您解决问题的地方

在循环内部,你改变了
i
j
,这意味着它们永远不会到达
N
,因此你有一个无限循环


我建议您不要更改这些变量,而是使用两个新变量,最好是有意义的名称。

您在while循环中更改了
I
j

    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            int ii = i, jj = j;
            do { // Using Euclidean algorithm
               r = ii % jj;
               ii = jj;
               jj = r;
            } while (r > 0);
            if (ii == 1) System.out.print("*");
            else System.out.print(" ");
        }
        System.out.println();
    }

for(i=1;i您在while循环中更改了
i
j

    for (i = 1; i <= N; i++) {
        for (j = 1; j <= N; j++) {
            int ii = i, jj = j;
            do { // Using Euclidean algorithm
               r = ii % jj;
               ii = jj;
               jj = r;
            } while (r > 0);
            if (ii == 1) System.out.print("*");
            else System.out.print(" ");
        }
        System.out.println();
    }
(i=1;i)的