将两个数组求和到第三个数组

时间:2018-11-13 12:10:04

标签: java

我正在为我的大学任务编写程序。这是关于将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}

3 个答案:

答案 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]);
}