gpt4 book ai didi

java - ArrayIndexOutOfBound 使用多维数组反转数组顺序时出现异常 :

转载 作者:行者123 更新时间:2023-12-01 22:21:26 25 4
gpt4 key购买 nike

所以我目前正在研究多维数组(2D),并且尝试反转二维数组中每个数组的顺序。

所以我有一个二维数组设置为:int firstArray[][] = {{5,6,7,8,9,10}, {11,12,13,14,15,16}}

我已经手动检查了这个问题,看看我可能在哪里出错,看看我的代码的哪一部分最终会超出我的 for 循环范围。 -1 部分也让我措手不及。

我开始对常规一维数组进行反转,并尝试将相同的概念应用于多维数组。

class Test2 {

public static void main (String[] args) {
int firstArray[][] = {{5,6,7,8,9,10}, {10,11, 12, 13, 14, 15}};
System.out.println("FIRST ARRAY");
display(firstArray);
}

public void display(int [][]num) {
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length/2; j++) {
int temp = num[i][j];
num[i][j] = num[i][num.length-1-j];
num[i][num.length-1-j] = temp;
}
}
for (int a = 0; a < num.length; a++) {
for (int b = 0; b < num[a].length; b++) {
System.out.print(num[a][b] + "\t");
}
System.out.println();
}
}
}

我希望使用显示方法的输出基本上与二维数组中的数组相反:

10 9 8 7 6 5

15 14 13 12 11 10

我遇到的问题是

Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: -1 ArrayIndexOutOfBoundsException: -1

at Test2.display(Test2.java:30)

at Test2.main(Test2.java:20)

最佳答案

您使用的长度尺寸有误。
使用num.length,您使用的是当前行的行数,而不是列数。
您需要将其更改为 num[i].length

public static void display(int [][]num) {
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length/2; j++) {
int temp = num[i][j];
num[i][j] = num[i][num[i].length-1-j];
num[i][num[i].length-1-j] = temp;
}
}
for (int a = 0; a < num.length; a++) {
for (int b = 0; b < num[a].length; b++) {
System.out.print(num[a][b] + "\t");
}
System.out.println();
}
}

关于java - ArrayIndexOutOfBound 使用多维数组反转数组顺序时出现异常 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58587660/

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