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

如何获得特定形状的数字模式(java)?,java,numbers,Java,Numbers,我想打印这样的数字图案 但是,我没有得到这个三角形的形状,我很困惑如何放置空格来得到这个形状--> 这是我到目前为止试过的代码 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--)

我想打印这样的数字图案

但是,我没有得到这个三角形的形状,我很困惑如何放置空格来得到这个形状-->

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

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

谢谢

只需在主循环中的其他两个步骤之前再添加一个步骤:

for (int i = u; i < r; i++)
{
    System.out.print(" ");
}
for(int i=u;i
这将打印空格以弥补“丢失”的数字

关于Mateusz的评论,请看一下如何在数字上加空格,以便在超过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));
}
静态int填充;
公共静态void main(字符串[]args)
{
int r=Integer.parseInt(args[0]);
padding=Math.max(1,(int)Math.ceil(Math.log10(r));
对于(int u=1;u=1;i--)
{
印刷品(一);
}
对于(int i=2;i
使用2表示循环
package com.stackoverflow;
导入java.util.Scanner;
公共阶层金字塔{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“输入金字塔限制值:”);
int limit=in.nextInt();
in.close();
对于(int i=0;i0)?极限-j:j-极限+2;
系统输出打印(温度);
}
}
System.out.println();
}
}
} 使用4表示循环
package com.stackoverflow;
导入java.util.Scanner;
公共阶层金字塔{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“输入金字塔限制值:”);
int limit=in.nextInt();
in.close();
对于(int i=0;i对于(int j=0;j)当有20行时会发生什么?我的意思是第10行和更大的行应该显示什么数字?看起来很像一个家庭作业问题。。
for (int i = u; i < r; i++)
{
    System.out.print(" ");
}
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));
}
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();
        }
    }
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();
        }
    }
}