嵌套的 For 循环给出不正确的输出

Nested For Loops Giving Incorrect Output

我正在尝试从我的代码中获取以下输出:

x  o  o  o  o  
x  x  o  o  o  
x  x  x  o  o  
x  x  x  x  o  
x  x  x  x  x

这是我的代码:

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
        if (i == j) {
            System.out.print(" x ");
        } else {
            System.out.print(" o ");
        }
    }
    System.out.println();
}

但我无法获得正确的输出。我使用此代码得到以下输出:

 x  o  o  o  o 
 o  x  o  o  o 
 o  o  x  o  o 
 o  o  o  x  o 
 o  o  o  o  x 

在条件 i == j 的情况下,您只会得到对角线元素中的 x。如果您想要所需的输出,则必须将条件修改为 i >= j

这是更正后的代码片段:

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
        if (i >= j) {
            System.out.print(" x ");
        } else {
            System.out.print(" o ");
        }
    }
    System.out.println();
}

输出:

 x  o  o  o  o 
 x  x  o  o  o 
 x  x  x  o  o 
 x  x  x  x  o 
 x  x  x  x  x 

只需将 if(i == j) 更改为 if(j <= i) 即可!

详细解释:

想想逻辑

  • i为外循环,负责每一行
  • j 是内部循环,在行
  • 中打印每个字符(xo
  • 那么应该打印多少x(即j的值),取决于行号(即i
  • 从第一个位置(j == 1)打印x,到第i个位置(j == i),即j1i,写在Java中就是j <= i