我有一个数组,在这种情况下是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语句只是为了检查代码是否在结果方面按预期工作)。 感谢答案 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+中,您可以使用DoubleStream
和map
操作通过一行代码生成相同的结果。像,
public static double[] multiply(double[] v, double c) {
return DoubleStream.of(v).map(d -> d * c).toArray();
}