编写一个获取两个int数组的方法,这些数组具有相同的大小并返回一个两者之和的数组

时间:2016-11-15 19:31:54

标签: java arrays methods

我的代码如下,我无法理解在调用方法时我必须使用什么作为参数。

import java.util.Scanner;

public class addArrays {

    public static void main (String[]args) {
        int arr [] = new addArrays(int [] array1, int [] array2);
    }
    public static int[] addArrays(int[] arr1, int[] arr2) {
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter the size of an array: ");
        int size = in.nextInt();
        int[] array1 = new int[size];
        for (int i = 0; i < array1.length; i++) {
            array1[size] = in.nextInt();
        }
        int[] array2 = new int[size];
        for (int j = 0; j < array2.length; j++) {
            array2[size] = in.nextInt();
        }
        int[] array3 = new int[size];
        for (int k = 0; k < array3.length; k++) {
            array3[size] = array1[size] + array2[size];
        }
        return array3;
    }
}

2 个答案:

答案 0 :(得分:1)

你的函数addArrays有两个参数(arr1和arr2),但它们不在函数中使用。正在添加的数组被初始化并填充在函数(array1和array2)中。

我想你应该将array1和array2的初始化和填充移动到main()中,并在addArrays函数中将两个数组的加法分开。然后将array1和array2(从System.in填充)传递给函数。

您还使用size变量而不是索引(i和j)来填充数组。这些都可以重用相同的索引变量;它可以在循环之外重新定义或定义。

注意变量的名称及其可见性,特别是在将它们传递给函数时,并将它们作为函数参数接受。

import java.util.Scanner;
public class addArrays {
    public static void main (String[]args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter the size of an array: ");
        int size = in.nextInt();
        System.out.println("Please enter numbers to populate array 1: ");
        int[] array1 = new int[size];
        for (int i = 0; i < size; i++) {
            array1[i] = in.nextInt();
        }
        System.out.println("Please enter numbers to populate array 2: ");
        int[] array2 = new int[size];
        for (int j = 0; j < size; j++) {
            array2[j] = in.nextInt();
        }
        System.out.println("Thank you! The result is: ");
        int[] arr3 = addArrays(array1, array2);
        for (int j = 0; j < size; j++) {
            System.out.println(arr3[j]);
        }
    }
    public static int[] addArrays(int[] arr1, int[] arr2) {
        int size = arr1.length;
        int[] array3 = new int[size];
        for (int k = 0; k < size; k++) {
            array3[k] = arr1[k] + arr2[k];
        }
        return array3;
    }
}

答案 1 :(得分:0)

我们可以假设它们的大小相同,这样可以使事情变得更简单。不确定你要使用扫描仪的是什么,但是下面的函数需要2个相同大小的数组,并返回一个等价索引的总和。

public static int[] addArrays(int[] arr1, int[] arr2) {
    int size = arr1.length;
    int[] array1 = new int[size];
    for (int i = 0; i < size; i++) {
        array1[i] = arr1[i] + arr2[i];
    }
    return array1;
}