gpt4 book ai didi

java - 二维数组bug(找不到)

转载 作者:行者123 更新时间:2023-11-30 06:19:36 24 4
gpt4 key购买 nike

我正在做这个产生帕斯卡三角形的家庭作业项目,但我遇到了一个错误,我找不到它。我看了很多遍,但对我来说似乎没问题,有人可以帮我找到错误吗?

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();
}
}

最佳答案

我假设您已经将代码更改为使用 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 并且然后 i 将递增。您已经在 for 循环的声明中增加了 i 。所以,我们去掉了 ++

但是我们还有另一个问题。您在 i = 0 处开始循环。然后初始化一个长度为 0 的数组。然后向该数组添加一个元素。有些事情没有意义。您的意思是将数组初始化为 int[i + 1]

最后程序显示帕斯卡三角的一些线:

 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

关于java - 二维数组bug(找不到),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com