我正在做这个产生帕斯卡三角形的作业项目,但是我收到了一个错误,我找不到它。我看了很多次,但对我来说似乎没关系,有人可以帮我找到这个错误吗?
public class PascalsTriangle {
public static void main(String[] args) {
int[][] triangle = new int[11][];
fillIn(triangle);
print(triangle);
}
public static void fillIn(int[][] triangle) {
for (int i = 0; i < triangle.size(); i++) {
triangle[i] = new int[i++];
triangle[i][0] = 1;
triangle[i][i] = 1;
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
}
}
}
public static void print(int[][] triangle) {
for (int i = 0; i < triangle.length; i++) {
for (int j = 0; j < triangle[i].length; j++) {
System.out.print(triangle[i][j] + " ");
}
System.out.println();
}
}
答案 0 :(得分:4)
我认为您已将代码更改为使用length
而不是size
,因为其他答案会提及。
调用此方法时:
public static void fillIn(int[][] triangle) {
for (int i = 0; i < triangle.length; i++) {
triangle[i] = new int[i++]; // this line
triangle[i][0] = 1;
上面指出的那一行应该是:
triangle[i] = new int[i + 1];
当您致电i++
时,int数组将初始化为i
和然后,我将会增加。您已经在for循环的声明中递增i
。所以,我们带走了++
。
但是我们还有另一个问题。你在i = 0
开始循环。然后初始化长度为0
的数组。然后向该数组添加一个元素。有些事情没有意义。你打算做的是将数组初始化为int[i + 1]
。
最后,程序会显示Pascal三角形中的一些行:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
答案 1 :(得分:1)
不确定此方法是否存在
triangle.size()
试
triangle.length
代替