帕斯卡三角形二维数组 - 格式化打印输出
我有一个小作业,必须使用二维数组来生成帕斯卡三角形。这是我的代码,它有效。如果我像这样显示三角形,则有额外的机会:
(来源:daugerresearch.com)
但是,我的间距不是像这样格式化。它只是显示所有在左侧排列的数字。它很难描述,但如果你运行它,你就会明白我的意思。
这是我的代码:
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();
}
}
}
如果有人可以帮助我弄清楚如何向我的程序添加正确的间距以产生图片中所需的输出,那就太好了。我知道我需要在某个地方放置一个 System.out.print(" ")
。我只是不知道在哪里。
I have a small assignment where I have to use a 2d array to produce Pascal's triangle. Here is my code, and it works. There is an extra credit opportunity if I display the triangle like so:
(source: daugerresearch.com)
However, my spacing is not formatted like that. it simply displays the numbers all lined up on the left. its hard to describe but if you run it you will see what I mean.
Here is my code:
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();
}
}
}
If someone could help me figure out how to add the correct spacing to my program to produce the output desired in the picture, that would be great. I know I need to put a System.out.print(" ")
somewhere. I just dont know where.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在这里,我修改了您的代码,由于我的控制台窗口的限制,它对于 ROW 大小到 13 的打印效果非常好:
输出:
Here I had modified your code, it prints wonderfully for ROW size till 13, because of the limitation of my console window:
Output:
您遇到间距问题,因为您需要向某些数字添加空格以容纳较大数字占用的空间。首先确定您计划打印的最大数字是多少(以编程方式)。然后确定该数字 log(n) 中的位数。然后,您可以使用此数字为位数少于最大数字的数字打印空白,以使打印看起来更好。
You're encountering spacing issues because you need to add whitespace to certain numbers to accommodate space that larger numbers occupy. First determine what the largest number you plan to print is (programmatically). Then determine the number of digits in that number log(n). You can then use this number to print whitespace for numbers that have less digits than your largest number to make your printing look nicer.
您可以在二维数组的左上角构建一个帕斯卡三角形,如下所示:
两个嵌套流:在行上,然后在列上。第一行和第一列的元素都等于1,所有其他元素都是该行和列中前一个元素的总和。
时,格式为两位数
"%2d"
- 当n=10
、"%4d"
- 当n=16
时,格式为四位数字,依此类推。You can build a Pascal's triangle in the upper left corner of a 2d array that looks like this:
Two nested streams: over the rows and then over the columns. Elements of the first row and column are equal to one, all other elements are the sum of the previous element in the row and column.
"%2d"
- format as a two-digit number, whenn=10
,"%4d"
- format as a four-digit number, whenn=16
, and so on.您也可以参考下面的代码。
输出:
You can also refer to the below code.
Output:
关于这个上一个答案,您可以使用两个嵌套的增强型在左上角输出一个格式化的三角形循环。
<一href="https://tio.run/##hZPBbuIwEIbvPMWoUgWI0i5ST2X7CHvqEXEwxIHJJnbWHoOqLc/O/k 4Im5Cg5uKxMzP@5p9xpg5qbkttsuT3@VyGTc5b2ubKe/ql2NDfEEG7nHtRguVgOaECfycf4tjsVmtS buenF@f4sREy9E6L1@X17OWFlIGnU59kUxqbMTl79O2Y1brK5RBp9LE6MTjq5GDRTokme9COZK@rJD FhtKvsV@/UOppEFEbCH0ssP8lgmc3arA1bTFSDzXlMOteFNuI7bki/4nWbjubELb57jE22hhNXdWKup FlNmkXSmBtmn7ZSK0UAvcObvr5iGKwhvwvRLUDKzksPo9OqhLY2D0VsGQr4E1ROYskaPRhSS7PKojq LZc/lBAKv7/OpPCcLMPefNF4bUX0oLtT3gkunD2yDb2LRmkblVh3fYjc2dF@saVbvqw3@D5Q0Gt6d2t OKxhZKRCdkg5RBerOJgY@Yb/G22/615vctek1HA8XXN5CCYLCDmye8Y7y@UGyg5pFlP9izqHmSsLA1 aOxxj5H1pdriCUml3Ubv2Bi87l7kx6cXXTyjnucSz1/SyQM9viYPT8TTrkq3nrmZtDxqnU6j0/n8Dw" rel="nofollow noreferrer" title="Java (OpenJDK 8) – 在线试用">在线试用!
With respect to this previous answer, you can output a formatted triangle in the upper left corner using two nested enhanced for loops.
Try it online!