在java中嵌套for循环以打印以下内容

时间:2013-08-28 13:31:17

标签: java loops for-loop

我如何在Java中打印以下内容:

  5
 55
555
 55
  5

只使用嵌套的for循环而不使用if语句。

到目前为止:

public static void main(String[] args) {
    for(int i = 1; i < 6; i++) {

        for(int k = 3; k > i; k--) {
            System.out.print(" ");
        }
        for(int k = 3; k < i; k++) {
            System.out.print(" ");
        }
        for(int j = i; j > 0; j--) {

            System.out.print("5");
        }

        System.out.println();

    }

}

正如您所看到的,我得到的空格正确但不是每行5的数量。 我不知何故觉得必须有可能只为所有空间使用1 for循环?

3 个答案:

答案 0 :(得分:0)

您希望打印的空格数减少到一个点然后再次开始增加,因此一个选项是使用abs()

int n = 3;  // number of columns

for (int i = 0; i < 2 * n - 1; i++) {
    int k = Math.abs(n - i - 1);

    for (int j = 0; j < k; j++)
        System.out.print(' ');

    for (int j = 0; j < n - k; j++)
        System.out.print('5');

    System.out.println();
}
  5
 55
555
 55
  5

此处,k是我们要打印的空格数(因此n-k5的数量,如第二个{​​{1}}中所示 - 环)。当for接近k时,i会减少,此时它会变为n - 1。随着0进一步增加,i内的术语变得越来越消极,意味着其绝对值再次开始增长。

答案 1 :(得分:0)

您需要先将模式分为两部分:

  • 上半场

      5
     55
    555
    
  • 下半部

    55
     5
    

在上半部分有3行要打印。分析每一行。

  1. 对于行号1有2个空格和1个“5”。
  2. 对于行号2有1个空格和2“5”。
  3. 对于行号3没有空格和3“5”。
  4. 所以,如果我代表我的行,那么当我是1时,即行号。 1没有。要打印的空白区域是(3-i),即2和否。要打印的“5”是i,即1。

    在类似的行上你可以打破完整的问题。 的解决方案:

        class Main{
            public static void main(String args[]) {
                for(int i=1;i<=3;i++) {
                   for(int j=1;j<=(3-i);j++) {
                       System.out.print(" ");
                   }
                   for(int j=1;j<=i;j++) {
                       System.out.print("5");
                   }
                   System.out.println();
                }
                for(int i=1;i<3;i++) {
                   for(int j=1;j<=i;j++) {
                       System.out.print(" ");
                   }
                   for(int j=1;j<=(3-i);j++) {
                       System.out.print("5");
                   }
                   System.out.println();
                } 
             }
        }
    

答案 2 :(得分:0)

您可以将1 for循环用于行数,将第2个用于列数。这样你就需要使用4 for loop ..