嵌套为循环提供不正确的输出

时间:2017-01-10 20:42:18

标签: java for-loop nested-loops

我试图从我的代码中获取以下输出:

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 

2 个答案:

答案 0 :(得分:2)

只需将if(i == j)更改为if(j <= i)即可,一切正常!

长解释:

考虑逻辑

  • i是外部循环,负责每一行
  • j是内部循环,用 - 在行中打印每个字符(xo
  • 那么应该打印多少x(即j的值),具体取决于行号(即i
  • 将x从第一个位置(j == 1)打印到i位置(j == i),即j1到{{ 1}},用Java编写的是 i

答案 1 :(得分:0)

条件为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