-2

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

  5
 55
555
 55
  5

只使用没有 if 语句的嵌套 for 循环。

到目前为止我所拥有的:

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每行上的 's 的数量。我不知何故觉得必须有可能对所有空间只使用 1 个 for 循环?

4

3 回答 3

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-k5s 的数量,如第二个for循环所示)。k随着i接近而减少n - 1,此时它变为0. 随着i进一步增加,内部一词abs()变得越来越消极,这意味着它的绝对值再次开始增长。

于 2013-08-28T13:57:59.973 回答
0

您可以使用 1 for 循环来表示行数,使用 2nd 循环来表示列数。这样,您将需要使用 4 for loop ..

于 2014-01-26T16:11:46.497 回答
0

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

  • 上半部分

      5
     55
    555
    
  • 下半场

    55
     5
    

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

  1. 对于行号。1 有 2 个空格和 1 个“5”。
  2. 对于行号。2有1个空格和2个“5”。
  3. 对于行号。3没有空格和3个“5”。

因此,如果 i 代表我的行,那么当 i 为 1 时,即行号。1 号 要打印的空格数是 (3-i) 即 2 和 no。要打印的“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();
            } 
         }
    }
于 2013-08-28T14:10:33.583 回答