【问题标题】:please Correct For Loop Design请纠正循环设计
【发布时间】:2015-04-25 10:24:09
【问题描述】:
class aaaaa
{
  public static void main(String[] args)
  {
    for (int i = 0; i <= 10; i++) {
      for (int k = 10; k < i; k++) {
        System.out.print(" ");
      }
      for (int j = 100; j >=10; j=j-10) {
        System.out.print(j);
      }
      System.out.println("");
    }
  }
}

我想要这样的输出:

100 90 80 70 50 40 30 20 10 
-----------------
90 90 70 60 50 40 30 20 10 
-----------------
80 70 60 50 40 30 20 10 
-----------------
70 60 50 40 30 20 10 
-----------------
60 50 40 30 20 10 
-----------------
50 40 30 20 10 
-----------------
40 30 20 10 
-----------------
30 20 10
-----------------
20 10
-----------------
10
-----------------

但总是这样:

100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------
100908070605040302010
-----------------

【问题讨论】:

  • 欢迎来到程序员。关于为什么特定代码不起作用的问题是off topic on this site
  • 代码审查离题了。无论如何,在你的第二个内部循环中,你不应该分配j = 100,而是分配j = 100 - (10 * i)(你的示例输出似乎有一些错误)

标签: java


【解决方案1】:

看看我的示例代码。它完全符合您的要求。

public static void main(String[] args)
{
    for(int i = 0; i < 10; i++)
    {
        for(int j = 10 - i; j > 0; j = j--)
        {
            System.out.print(j * 10);
            System.out.print(" ");
        }
        System.out.println();
        System.out.println("-----------------");
    }
}

【讨论】:

    【解决方案2】:

    第一个嵌套的for 循环永远不会执行。外部 for 循环将 i 设置为最多 10。条件 k &lt; i 在第一次迭代中永远不会为真,因此它永远不会运行。

    所以删除这个:

    for (int k = 10; k < i; k++) {
        System.out.print(" ");
    }
    

    您的第二个嵌套 for 循环将始终具有相同的输出。无论如何,条件总是相同的。要在数字之间留有空格,您需要将 System.out.print(" "); 放入此 for 循环中。

    你需要把第二个循环改成这样:

    for (int j = 100 - (10 * i); j > 10; j=j-10) {
        System.out.print(j);
        System.out.print(" ");
    }
    

    请注意,我们将j 的起始索引更改为100 - (10 * i)。这意味着对于外部循环的每次迭代,都会删除最大的数字。

    在迭代 1 中,第一个结果是 100 - (10 * 0) = 100。

    在第 2 次迭代中,第一个结果是 100 - (10 * 1) = 90。

    在第 3 次迭代中,第一个结果是 100 - (10 * 2) = 80。

    ...

    在第 10 次迭代中,第一个结果是 100 - (10 * 9) = 10

    最后的结果总是100 - (10 * 9) = 10。 (我已将条件从j &gt;= 10 更改为j &gt; 10。否则,最后的结果将是100 - (10 * 10) = 0。)


    最终的工作代码:

    class aaaaa
    {
        public static void main(String[] args)
        {
            for (int i = 0; i <= 10; i++) {
                for (int j = 100 - (10 * i); j > 10; j=j-10) {
                    System.out.print(j);
                    System.out.print(" ");
                }
                System.out.println("");
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多