如何使用方法将两个数组一起添加

时间:2017-10-29 02:53:04

标签: java arrays object methods sum

我正在尝试一起添加到列表中。 (我知道我的班级名称不适合它,但无论如何)

我面临的问题是我有代码的地方:

C[i] = v[i] + x[i];

它说表达式的类型必须是一个数组但是已经解析成一个变量.....任何建议如何绕过它并且能够使用方法将两个数组加在一起?

import java.util.Arrays;

public class reverse {

    int n;
    double [] arr;


    public reverse( int input){

        n =input;
        arr = new double[n];

    }


    public double[] get_array(){

        for (int i = 0; i < n; i ++)
        {
            arr[i] = i + 1;

        }

        return arr;
    } 




    public  reverse add(reverse v, reverse x){

        reverse C = new reverse(3);
                for( int i = 0; i < n; i++){

            C[i] = v[i] + x[i];
            System.out.println(C[i]);
        }
                return C;   
    }

    public static void main(String[] args){


            reverse A = new reverse(5);
            reverse B = new reverse(5);
            System.out.println( Arrays.toString(A.get_array()));
            System.out.println( Arrays.toString(B.get_array()));

        }
    }

3 个答案:

答案 0 :(得分:0)

要从vx拨打get_array()来获取各个数组。此外,按照惯例,方法get_array()应为getArray(),而类reverse应为Reverse。要正确调整C的大小,请获取vx的长度,然后选择max(或min,如果您只想要出现在两边的元素)。迭代并添加值,将结果存储在C的数组中。像,

public reverse add(reverse v, reverse x) {
    reverse C = new reverse(Math.max(v.n, x.n));
    double[] vals = C.get_array(), left = v.get_array(), right = x.get_array();
    for (int i = 0; i < C.n; i++) {
        if (i < left.length && i < right.length) {
            vals[i] = left[i] + right[i];
        } else if (i < left.length) {
            vals[i] = left[i];
        } else {
            vals[i] = right[i];
        }
    }
    return C;
}

如上所述,如果您只想添加双方存在的元素,则可以简化代码。使用Math.min获取正确的长度,您可以消除数组长度检查。像,

public reverse add(reverse v, reverse x) {
    reverse C = new reverse(Math.min(v.n, x.n));
    double[] vals = C.get_array(), left = v.get_array(), right = x.get_array();
    for (int i = 0; i < C.n; i++) {
        vals[i] = left[i] + right[i];
    }
    return C;
}

答案 1 :(得分:0)

问题在于,通过说reverse C;,您没有创建数组,因此您无法使用C [i]。

public  reverse add(reverse v, reverse x){
    reverse C = new reverse(3);
    for( int i = 0; i < n; i++){
        //Replace C with C.arr
        C.arr[i] = v[i] + x[i];
        System.out.println(C.arr[i]);
    }
    return C;   
}

此处C.arr指的是C

中的arr字段

同样按惯例,类型名称应以大写字母

开头

答案 2 :(得分:0)

C,v和x是Reverse类型的对象,而不是数组。您需要访问对象中的数组。

C.arr[i] = v.arr[i] + x.arr[i];
System.out.println(C.arr[i]);

此外,您不允许它们可能不是相同大小的数组。您可能需要考虑到这一点。