您好我正在尝试将两个数组转换为一个二维数组。但是,我一直收到错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at test5.sum(test5.java:12)
at test5.main(test5.java:38)
这是我的代码:
public class test5 {
int[][] final23;
public int[][] sum(int[] x, int[] y) {
final23 = new int[2][x.length];
for (int i = 0; i < final23[i].length; i++) {
final23[1][i] = x[i];
final23[2][i] = y[i];
}
return final23;
}
public void print() {
for (int i = 0; i < final23[i].length; i++) {
for (int j = 0; j < final23[i].length; j++) {
System.out.print(final23[i][j] + " ");
}
}
}
public static void main(String[] args) {
int l[] = { 7, 7, 3 };
int k[] = { 4, 6, 2 };
test5 X = new test5();
X.sum(k, l);
X.print();
}
}
我不确定问题是什么。对不起,如果问题是愚蠢的,我是编码的新手!
答案 0 :(得分:5)
问题是:
final23 [2][i] = y[i];
Java数组总是从0开始。所以final23只有[0]和[1]。
任何带有 n 元素的数组都可以从0到 n -1。
答案 1 :(得分:3)
您的计划还存在第二个问题。您在sum
和print
方法中都有此循环:
for (int i = 0; i < final23[i].length; i++)
总结方法应该是
for (int i = 0; i < final23[0].length; i++)
在打印方法
for (int i = 0; i < final23.length; i++)
否则你会再次获得ArrayIndexOutOfBoundsException
。
请注意,只有两个输入数组的长度相同时,程序才能正常工作。这可能适合您的目的,但请记住这一点。
答案 2 :(得分:1)
尝试
for (int i = 0; i < final23[i].length; i++)
{
final23 [0][i] = x[i];
final23 [1][i] = y[i];
}
请记住,所有数组都是基于0的,甚至是n维数组。