我正在为我的大学任务编写程序。这是关于将2个数组相加,然后输出到第三个数组中。但是出现错误 ArrayOutOfBoundsException ,但是idk哪里出错了。
这是我的源代码
Scanner sc = new Scanner(System.in);
int[] arr1 = new int[3];
int[] arr2 = new int[3];
int i, j, k;
for(i = 0; i < 3; i++) {
System.out.print("Masukkan array pertama ke-" + i + ": ");
arr1[i] = sc.nextInt();
}
for(j = 0; j < 3; j++) {
System.out.print("Masukkan array kedua ke-" + j + ": ");
arr2[j] = sc.nextInt();
}
for(k = 0; k < 4; k++) {
int[] arr3 = new int[3];
System.out.println(arr3[k] = arr1[i] + arr2[j]);
}
期望是这样
arr1 = {1, 2, 3, 4}
arr2 = {1, 2, 3, 4}
arr3 = {2, 4, 6, 8}
答案 0 :(得分:0)
for(k = 0; k < 4; k++) {
int[] arr3 = new int[3];
System.out.println(arr3[k] = arr1[i] + arr2[j]);
}
这里有两个主要错误。您要做k < 4
,而您应该做k < 3
另外,您不应该在每次迭代时重新创建数组。试试这个:
int[] arr3 = new int[3];
for(k = 0; k < 3; k++) {
arr3[k] = arr1[k] + arr2[k]; // i and j don't make sense here.
}
打印阵列,您可以在此之后完成。
答案 1 :(得分:0)
根据您的预期输出,您的数组大小应为4而不是3。您的代码应如下所示:
int[] arr1 = new int[4];
int[] arr2 = new int[4];
您的代码收到ArrayOutOfBoundsException,因为第3个for循环中的k应该是3而不是4,因为您的k应该小于数组大小3。要说的一件事是,不是硬编码数组大小,最好分配一个变量来存储数组的大小,这样您就不必跟踪大小了。或者您每次使用for循环就可以这样做:
k < array.length
答案 2 :(得分:-1)
问题是输入长度为3,输出长度为4。
Scanner sc = new Scanner(System.in);
int[] arr1 = new int[3];
int[] arr2 = new int[3];
int i, j, k;
//Changed 3 below to 4
for(i = 0; i < 4; i++) {
System.out.print("Masukkan array pertama ke-" + i + ": ");
arr1[i] = sc.nextInt();
}
//Changed 3 below to 4;
for(j = 0; j < 4; j++) {
System.out.print("Masukkan array kedua ke-" + j + ": ");
arr2[j] = sc.nextInt();
}
for(k = 0; k < 4; k++) {
int[] arr3 = new int[3];
System.out.println(arr3[k] = arr1[i] + arr2[j]);
}