簡體   English   中英

將兩個數組求和到第三個數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM