请纠正循环设计

时间:2015-04-25 10:24:10

标签: java

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
-----------------

2 个答案:

答案 0 :(得分:1)

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

select count(*) from table where  timestamp < :t1

答案 1 :(得分:0)

永远不会执行第一个嵌套for循环。外部for循环将i设置为最多10.条件k < 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 >= 10更改为j > 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("");
        }
    }
}