Java中的数字模式打印

时间:2019-02-18 15:04:35

标签: 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

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

3 个答案:

答案 0 :(得分:5)

这是您想要的模式:

   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代码。

答案 1 :(得分:0)

您只需要一个内部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

答案 2 :(得分:-1)

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

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();
}

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

输出:

   4
  34 
 234 
1234