Javaデジタルピラミッド

2076 ワード

Javaでは次のように実現されます.
        1
       121
      12321
     1234321
    123454321
   12345654321
  1234567654321
 123456787654321
12345678987654321

方法1:
private static void pyramid(int line) {
		for(int i=1; i<=line; i++) {
			for(int j=1; j<=line-i; j++) {
				System.out.print(" ");
			}
			boolean flag = true;
			int l = 0;
			for(int k=1; flag?k<=i:k>=1; l=flag?k++:k--) {
				System.out.print(k);
				if(k == i) {
					flag = false;
				}
			}
			System.out.println();

		}
	}

方法2:再帰
private static void pyramid(int currentLine, int maxLine) {
		if(currentLine == maxLine) {
			return;
		}
		
		int column = 0;
		int num = 0;
		while(column < 2*currentLine - 1) {
			if(column == 0) {
				for(int i=1; i<maxLine-currentLine; i++) {
					System.out.print(" ");
				}
			}
		
			if(column < currentLine) {
				System.out.print(++ num);
			} else {
				System.out.print(-- num);
			}
			
			column ++;
		}
		System.out.println();
		
		pyramid(++ currentLine, maxLine);

メソッド3:2 D配列2 Dはいれつ
private static void pyramid(int maxLine) {
		int[][] arr = new int[maxLine][]; 
		for(int i=0; i<arr.length; i++) {
			arr[i] = new int[2*i+1];
			int num = 0;
			for(int j=0; j<arr[i].length; j++) {
				if(j <= i) {
					arr[i][j] = ++ num;
				} else {
					arr[i][j] = --num;
				}
			}
			
		}
		for(int i=0; i<arr.length; i++) {
			for(int k=1; k<maxLine-i; k++) {
				System.out.print(" ");
			}
			for(int j=0; j<arr[i].length; j++) {
					System.out.print(arr[i][j]);
			}
			System.out.println();
		}
	}