杨辉三角——java输出(完美格式)

package LocalSend;

public class YHTriangle {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int deep = 10; // 定义杨辉三角的深度
		int length = 10; // 定义每个数值的固定长度,以便使其对称
		String space = ""; // 定义一开始的空格长度,也就是每行开始的1之间的水平间隔
		for (int i = 0; i < length / 2; i++) { // 长度为数值长度的一半
			space = space + " ";
		}
		int[][] a = new int[deep][]; // 不规则定义二维数组
		for (int i = 0; i < deep; i++) { // 给每一行定义列的数量
			a[i] = new int[i + 1];
		}
		for (int i = 0; i < deep; i++) { // 两边全部设置为1
			a[i][0] = 1;
			a[i][a[i].length - 1] = 1;
		}
		for (int i = 2; i < deep; i++) { // 计算中央每一个位置的数值
			for (int j = 1; j < i; j++) {
				a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
			}
		}

		for (int i = 0; i < deep; i++) { // 打印
			for (int space_number = 0; space_number < deep - i; space_number++) {
				System.out.print(space); // 输出每行起始的空格,使得符合三角模型
			}
			for (int j = 0; j < a[i].length; j++) {  //打印数值,这个数值是固定长度,所以要先转换成字符串
				String output = a[i][j] + "";  //将数值转换成字符串,以便求其长度
				int output_length = output.length();  
				int add_space = (length - output_length) / 2;  
				for (int n = 0; n < add_space; n++) {  //添加空格时,要左右添加,看起来更加美观,所以上面要除以2
					output = " " + output + " ";
				}
				while (output.length() < deep) {  //因为是除以2,所以可能形成的字符串长度要比固定长度短,这里要添加回来,否则等行数增多以后,会造成很大的差距
					output = output + " ";
				}
				System.out.print(output);    //上面是准备工作,这个是真实打印出来

			}
			System.out.println("");
		}

	}

}

完美结果输出:

杨辉三角——java输出(完美格式)_第1张图片

如果要增加杨辉三角的层数,那么数值的长度最好也要跟着改变,这样形成的图案才不会有太大的误差,已经试验过了,达到20层,30层,都是没有问题的,因为图形比较大,这里就不贴图了,有兴趣的可以自己运行一下

如果有什么问题,可以在评论中联系我。

你可能感兴趣的:(杨辉三角——java输出(完美格式))