Java金字塔输出

Java金字塔输出,java,Java,大家好,我正在尝试创建一个金字塔程序,要求用户在1-15之间输入int。当我进入1-9时,它会创建一个完美的金字塔。但如果我输入10-15,中间的线就会向右移动,每个数字经过10就不再形成金字塔 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter a number between 1-15"); int dig

大家好,我正在尝试创建一个金字塔程序,要求用户在1-15之间输入int。当我进入1-9时,它会创建一个完美的金字塔。但如果我输入10-15,中间的线就会向右移动,每个数字经过10就不再形成金字塔

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number between 1-15");
    int dig = input.nextInt();
    for (int i = 1; i <= dig; i++) {

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

        for (int k = i; k >= 1; k--) {
            System.out.print("  " + k);
        }

        for (int k = 2; k <= i; k++) {
            System.out.print("  " + k);
        }
        System.out.println();
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1-15之间的数字”);
int dig=input.nextInt();
对于(inti=1;i给你:)

您必须计算最大数字的位数,然后在开始时创建更大的空格,但当两位数出现时,开始将其变小

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number between 1-15");
    int dig = input.nextInt();
    int length = ("" + dig).length();
    for (int i = 1; i <= dig; i++) {

        for (int j = 1; j <= dig - i; j++) {
            for (int f = 0; f < length; f++) {
                System.out.print("  ");
            }
            System.out.print(" ");
        }

        for (int k = i; k >= 1; k--) {
            for (int j = 0; j < length; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < length - (""+k).length() + 1; j++) {
                System.out.print(" ");
            }
            System.out.print(k);
        }

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

您仍然可以使用代码获得相同的结果,但不要使用print方法,而是使用printf方法,该方法将格式说明符作为第一个参数

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number between 1-15");
    int dig = input.nextInt();
    for (int i = 1; i <= dig; i++) {
        for (int j = 1; j <= dig - i; j++) {
            System.out.printf("%4s", " ");
        }
        for (int k = i; k >= 1; k--) {
            System.out.printf("%4d", k);
        }
        for (int k = 2; k <= i; k++) {
            System.out.printf("%4d", k);
        }
        System.out.println();
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入一个介于1-15之间的数字”);
int dig=input.nextInt();

对于(int i=1;i,因为10-15占用两个字符空间,所以需要在第1-9行中对此进行补偿。
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number between 1-15");
    int dig = input.nextInt();
    for (int i = 1; i <= dig; i++) {
        for (int j = 1; j <= dig - i; j++) {
            System.out.printf("%4s", " ");
        }
        for (int k = i; k >= 1; k--) {
            System.out.printf("%4d", k);
        }
        for (int k = 2; k <= i; k++) {
            System.out.printf("%4d", k);
        }
        System.out.println();
    }
}