将数组元素乘以n,并将它们存储在新数组中

时间:2018-05-27 01:14:44

标签: java arrays loops

我有一个数组,在这种情况下是double [] v,它将取4个值(0,1,2,3)。

我需要将数组的每个元素乘以" c"并将每个结果存储在一个新数组中。我试过了,但我总是得到错误信息,双倍无法转换为double []。我无法弄清楚为什么,SO中的示例没有帮助。

public class q7_2014 {
    public static double [] multiply ( double [] v, double c){
        double [] newArray = new double [4];
        double multiply = 0;

        for (int i = 0; i < v.length; i++){
            multiply = v[i]*c;



            System.out.println(multiply);

        }



        return newArray;

    }

}

代码工作正常并打印应该进入数组的内容,但我无法弄清楚如何。

我错过了什么? (print语句只是为了检查代码是否在结果方面按预期工作)。 感谢

3 个答案:

答案 0 :(得分:1)

您需要将乘法的结果设置回newArray

public class q7_2014 {
    public static double [] multiply (double[] v, double c){
        double[] newArray = new double[v.length];
        // You don't need multiply since
        // you need to return newArray
        //double multiply = 0;

        for (int i = 0; i < v.length; i++){
            newArray[i] = v[i] * c;
            // uncomment if you need to print the current value
            // System.out.println(newArray[i]);
        }
        return newArray;
    }
}

答案 1 :(得分:1)

试试这段代码:

public class q7_2014 {
public static double [] multiply ( double [] v, double c){
    double [] newArray = new double [4];
    for (int i = 0; i < v.length; i++){
        newArray[i] = v[i]*c;
        }

    return newArray;
   }
}

答案 2 :(得分:1)

您应该将乘法结果存储在newArray中。此外,您应该按传入的数组newArray长度调整v的大小。像,

public static double[] multiply(double[] v, double c) {
    double[] newArray = new double[v.length];
    for (int i = 0; i < v.length; i++) {
        newArray[i] = v[i] * c;
    }
    return newArray;
}

在Java 8+中,您可以使用DoubleStreammap操作通过一行代码生成相同的结果。像,

public static double[] multiply(double[] v, double c) {
    return DoubleStream.of(v).map(d -> d * c).toArray();
}