如何获取特定形状的数字模式(java)?

时间:2017-09-14 15:01:37

标签: java numbers

我想打印这样的数字模式..

但是,我没有得到这个三角形的形状,我很困惑如何设置空间以获得这种形状 - >

   1
  212
 32123
4321234

这是我到目前为止尝试的代码

public class Ch {

    public static void main(String[] args) {
        int r =Integer.parseInt(args[0]);
        for(int u=1;u<=r;u++)
        { 
            for(int i=u;i>=1;i--)
            {
                System.out.print(i);
            }

            for(int i=2;i<=u;i++)
            {
                System.out.print(i);
            }
            System.out.println();
        }
    }
}

此代码的输出看起来像这个

     1
     212
     32123
     4321234

由于

2 个答案:

答案 0 :(得分:1)

在主循环之前再添加一个步骤:

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

这将打印空格以弥补&#34;缺失&#34;号。

关于Mateusz&#39;评论,请查看this answer如何使用空格填充数字,以便在超过9时使其宽度相同:

static int padding;

public static void main(String[] args)
{
    int r = Integer.parseInt(args[0]);

    padding = Math.max(1, (int) Math.ceil(Math.log10(r)));

    for (int u = 1; u <= r; u++)
    {
        for (int i = u; i < r; i++)
        {
            print(" ");
        }

        for (int i = u; i >= 1; i--)
        {
            print(i);
        }

        for (int i = 2; i <= u; i++)
        {
            print(i);
        }
        System.out.println();
    }
}
private static void print(Object text)
{
    System.out.print(String.format("%1$" + padding + "s", text));
}

答案 1 :(得分:0)

使用2 for for循环

package com.stackoverflow;

import java.util.Scanner;

public class Pyramid {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the pyramid limit value: ");
        int limit = in.nextInt();
        in.close();
        for (int i = 0; i < limit; i++) {
            for (int j = 0; j < limit + i; j++) {
                if (j < limit -i-1)
                    System.out.print(" ");
                else{               
                    int temp = (limit-j > 0) ? limit-j : j-limit+2;
                    System.out.print(temp);
                }
            }
            System.out.println();
        }
    }

}

使用4 for for循环

package com.stackoverflow;

import java.util.Scanner;

public class Pyramid {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter the pyramid limit value: ");
        int limit = in.nextInt();
        in.close();
        for (int i = 0; i < limit; i++) {
            for(int j=0; j<limit-i; j++){
                System.out.print(" ");
            }
            for(int j=0; j<=i; j++){
                System.out.print(i-j+1);
            }
            for(int j=i; j>0; j--){
                System.out.print(i-j+2);
            }
            System.out.println();
        }
    }
}