繁体   English   中英

Java中的数字模式打印

[英]Number Pattern Printing in Java

我是编程新手。 因此,作为练习,我尝试打印如下的数字模式

   4
  34 
 234 
1234 

我尝试了以下代码

public static void main(String[] args) {
        // TODO Auto-generated method stub

        int n =4;
        for (int i = 1; i <= n; i++) {

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

            int num = 4;

            for (int j = 1; j <= i; j++) {
                System.out.print(num);
                num--;
            }
            System.out.println("");

        }

    }

但它是以这种方式打印的。

    4
   43
  432
 4321

我认为,我必须在打印前减少价值。 如果我错了,请纠正我。 但是我被困在这里。 谁能帮帮我吗?

这是您想要的模式:

   4
  34
 234
1234

当用语言描述模式时,它看起来可能像这样:

  • 第1行有3个空格,然后是数字4
  • 第2行有2个空格,然后是数字3和4
  • 第3行有1个空格,然后是2到4
  • 第4行有0个空格,然后是数字1到4

这里已经存在某种模式。 最后两行看起来非常相似。 让我们看看前两行是否可以采用相同的形式:

  • 第1行有3个空格,然后是数字4到4
  • 第2行有2个空格,然后是数字3至4
  • 第3行有1个空格,然后是2到4
  • 第4行有0个空格,然后是数字1到4

现在看起来不错。 下一步是将措辞更改为取决于给定的行:

  • 第i行有(4-i)个空格,然后数字(4-i + 1)至4

我注意不要说5而不是4 + 1,这样4仍然可见。 让我们给这4个另外一个名字:

  • 第i行有(max-i)个空格,然后数字(max-i + 1)到max

现在您应该能够将此指令转换为Java代码。

您只需要一个内部for循环。
我使用三元运算符(也称为elvis-operator,因为?: :)来决定是打印数字还是空格:

int n = 7;
for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
        System.out.print(j > n-i ? j : " ");
    }
    System.out.println();
}

它打印

      7
     67
    567
   4567
  34567
 234567
1234567

在这种情况下,您实际上只需要一个嵌套循环:

int n = 4;
for (int i = n; i > 0; i--) {
    for (int j = 1; j <= n; j++) {
        if (j < i) {
            System.out.print(" ");
        } else {
            System.out.print(j);
        }
    }
    System.out.println();
}

因此,从0循环到n并打印一个空格,或者如果内部计数器小于i则打印数字。

输出:

   4
  34 
 234 
1234 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM