Java金字塔输出

4

大家好,我正在尝试创建一个金字塔程序,要求用户输入介于1-15之间的整数。当我输入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();
    }
}

感谢您的帮助!


1
因为10-15占用了两个字符空间,所以您需要在第1-9行进行补偿。 - SimplyPanda
3个回答

4
你仍然可以通过代码实现相同的结果,但是不要使用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();
    }
}

在这里,每个被打印出来的整数都会通过指定一个4个字符的固定宽度来进行填充,因此可以弥补整数可能只有一位或两位的情况。


2

请看这里 :).

您需要计算最大数字的位数,然后在开头创建更大的空格,但当出现两位数时,开始使它们变小。

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

输出15的结果:

Enter a number between 1-15
15
                                                                          1
                                                                     2    1    2
                                                                3    2    1    2    3
                                                           4    3    2    1    2    3    4
                                                      5    4    3    2    1    2    3    4    5
                                                 6    5    4    3    2    1    2    3    4    5    6
                                            7    6    5    4    3    2    1    2    3    4    5    6    7
                                       8    7    6    5    4    3    2    1    2    3    4    5    6    7    8
                                  9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9
                            10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10
                       11   10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10   11
                  12   11   10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10   11   12
             13   12   11   10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10   11   12   13
        14   13   12   11   10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10   11   12   13   14
   15   14   13   12   11   10    9    8    7    6    5    4    3    2    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15

0
public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    System.out.print("Number of rows to print Pyramid: ");
    int rows= scanner.nextInt();
    scanner.close();
    
    
    String star="*";
    
    
    System.out.println("========================================");
    
    for (int i = 0; i < rows; i++) {
        for (int j =0; j<=rows-i ; j++) {

            System.out.print(" ");
        }
        
        for(int k=0; k<=i; k++) {
            System.out.print(star + " ");
            
        }
        System.out.println();
    }
}

输出 5 的结果:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接