![](/img/trans.png)
[英]Merge two integer arrays by summing their values one by one into one array
[英]summing 2 arrays to third array
我正在嘗試為我的大學任務編寫程序。 這是關於將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}
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.
}
打印陣列后,您可以執行此操作。
根據您的預期輸出,您的數組大小應為4而不是3。您的代碼應如下所示
int[] arr1 = new int[4];
int[] arr2 = new int[4];
您的代碼收到ArrayOutOfBoundsException,因為您的第3個for循環中的k應該為3而不是4,因為您的k應當小於數組大小3。要提到的一件事是,不是硬編碼數組大小,而是更好的做法是分配一個變量來存儲數組的大小,這樣您就不必跟蹤大小。 或者,每次使用for循環時,您都可以這樣做:
k < array.length
問題是輸入長度為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]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.