Pascal的三角形2d数组 – 格式化打印输出

我有一个小任务,我必须使用2d数组来生成Pascal的三角形。 这是我的代码,它的工作原理。 如果我像这样显示三角形,则会有额外的信用机会:

帕斯卡

但是,我的间距不是那样的格式。 它只显示左侧排列的数字。 它难以描述,但如果你运行它你会看到我的意思。

这是我的代码:

import java.util.*; public class Pascal { public static final int ROW = 16; public static void main(String[] args) { int[][] pascal = new int[ROW +1][]; pascal[1] = new int[1 + 2]; pascal[1][1] = 1; for (int i = 2; i <= ROW; i++) { pascal[i] = new int[i + 2]; for (int j = 1; j < pascal[i].length - 1; j++) { pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; } } for (int i = 1; i <= ROW; i++) { for (int j = 1; j < pascal[i].length - 1; j++) { System.out.print(pascal[i][j] + " "); } System.out.println(); } } } 

如果有人可以帮我弄清楚如何在我的程序中添加正确的间距以产生图片中所需的输出,那就太棒了:)我知道我需要把系统打印出来“”某处我不知道在哪里。 谢谢!

在这里,我修改了你的代码,它打印出奇妙的ROW大小直到13,因为我的控制台窗口的限制。

 import java.util.*; public class Pascal { public static final int ROW = 12; private static int max = 0; public static void main(String[] args) { int[][] pascal = new int[ROW +1][]; pascal[1] = new int[1 + 2]; pascal[1][1] = 1; for (int i = 2; i <= ROW; i++) { pascal[i] = new int[i + 2]; for (int j = 1; j < pascal[i].length - 1; j++) { pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; String str = Integer.toString(pascal[i][j]); int len = str.length(); if (len > max) max = len; } } for (int i = 1; i <= ROW; i++) { for (int k = ROW; k > i; k--) System.out.format("%-" + max + "s", " "); for (int j = 1; j < pascal[i].length - 1; j++) System.out.format("%-" + (max + max) + "s", pascal[i][j]); System.out.println(); } } } 

希望这可能会有所帮助。

问候

您遇到间距问题,因为您需要将空格添加到某些数字以适应较大数字占用的空间。 首先确定您计划打印的最大数量(以编程方式)。 然后确定该数字日志中的位数(n)。 然后,您可以使用此数字为数字少于最大数字的数字打印空白,以使您的打印看起来更好。