【问题标题】:Nested For Loops Giving Incorrect Output嵌套的 For 循环给出不正确的输出
【发布时间】:2017-01-10 20:42:18
【问题描述】:

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

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 

【问题讨论】:

  • 你用什么数据结构来存储它?有没有想过只写一个二维数组,然后打印它?
  • 您的代码输出是什么?与期望的结果相比,您缺少什么?

标签: java for-loop nested-loops


【解决方案1】:

只需将if(i == j) 更改为if(j &lt;= i),一切都会正常运行!

详细解释:

思考逻辑

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

【讨论】:

    【解决方案2】:

    i == j 条件下,您只会在对角元素中获得x。如果您想要所需的输出,则必须将条件修改为 i &gt;= j

    这里是修正后的代码sn-p:

    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 
    

    【讨论】:

    • omg 非常感谢,效果很好,再次感谢您
    • @Remmargrop 欢迎您!如果这解决了您的问题,请点击投票计数器下方的灰色勾号接受答案。
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2019-07-12
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多