Java console output digital pyramid sample share

  • 2020-04-01 02:47:07
  • OfStack


/*Java 
 *Author: NealFeng at oschina.net
 *License: GPLv2+
 *Time: 2014/1/17
 *
 * In the console The output of digital The pyramid: 
 *                   1
 *               1   2   1
 *           1   2   4   2   1
 *       1   2   4   8   4   2   1
 *   1   2   4   8  16   8   4   2   1
 * The downside of console output is that the Numbers cannot be completely centered and can only be right-aligned or left-aligned 
*/
public class NumberPyramid {
    public static void main(String[] args) {
        //The number of rows
        int lineNumber = 5;
        //base
        int baseNumber = 2;
        //Generate the number, the number is saved in the array {1,2,4,8... , 2 ^ n}
        int[] numbers = new int[lineNumber];
        numbers[0]=1;
        for(int i = 1; i < lineNumber; i++) {
            numbers[i] = numbers[i-1] * baseNumber;
        }
        //Calculate how many characters are in each number: the largest number of digits +2
        int columnsPerNumber = 
                String.valueOf(numbers[lineNumber-1]).length() + 2;
        //Output, the output format is as follows:
        //Each indent = columnsPerNumber of Spaces
        //Each number is columnsPerNumber in width
        //This will form a pyramid
        //Indent indent number
        //Indent number number number
        //Number number number number number number number
        //Numbers Numbers Numbers Numbers Numbers Numbers Numbers & NBSP; digital
        for(int i = 0; i < lineNumber; i++) {
            //Output the indentation
            for(int j = 0; j < lineNumber-i-1; j++) 
                System.out.printf("%"+columnsPerNumber+"s", " ");
            //The output of digital
            //Output {1,2,4,8,... , 2 ^ n}
            for(int k = 0; k < i+1; k++)
                System.out.printf("%"+columnsPerNumber+"d", numbers[k]);
            //Output {2 ^ n - 1,... 8,4,2,1},
            for(int m = 0; m < i; m++)
                System.out.printf("%"+columnsPerNumber+"d", numbers[i-m-1]);
            //A newline
            System.out.println();
        }
    }
}


Related articles: