我是编程和尝试学习Java的新手,我正尝试回答一些初学者觉得很困难的Java问题。该问题要求编写一个方法,该方法以double
c
和类型为v
的数组double
作为参数。该方法应返回通过将数组double
的所有元素乘以v
形成的c
新数组。
我真的不知道要这样做,如果有人可以提供帮助,我将不胜感激。
我已经写了一些代码,但是我不明白我应该怎么做。
public static double times( double c, double [] v)
int i =0;
for( i =0; i < v .length; i++){
myArray =(c * v[i]);
i++;
}
}
public class Main {
public static void main(String[] args) {
double [] v={5.1,5.2,3.0,4.0};
double c= 4.1;
System.out.println(times(v,c));
答案 0 :(得分:1)
这是一个好的开始,但是您的方法应该返回一个双精度数组:double[]
。
public static double[] times( double c, double [] v)
double[] myArray = new double[v.length]; // this is a new array
int i =0;
for( i =0; i < v .length; i++){
myArray[i] =(c * v[i]); // assign new values to your array
// i++; << don’t need this line as your for loop is already incrementing i
}
return myArray;
}
答案 1 :(得分:0)
上面提到的答案是正确的,但您可以在同一数组中执行相同的操作,即double [] v,而不必为优化方案而创建新数组
答案 2 :(得分:0)
仔细阅读您的问题。
我在代码中添加了注释,以便您了解您做错了什么:
// Return a double[] instead of double
public static double[] times( double c, double [] v)
// Create a new double array
double[] myArray = new double[v.length];
for (int i = 0; i < v.length; i++) {
// Set each element of the new array equals to the old array element in
// The same position multiplied by c
myArray[i] = c * v[i]; // Parenthesis are not needed here
// i++ is not needed because you already add 1 to i in the for instruction
}
// Return the new array
return myArray;
}
答案 3 :(得分:0)
还要小心打印。我相信您要打印新值而不是数组引用。
public static void main(String[] args) {
double[] v = {5.1, 5.2, 3.0, 4.0};
double c = 4.1;
double[] newV = times(c, v);
System.out.print("Array address: ");
System.out.println(newV);
System.out.print("Array as string: ");
System.out.println(Arrays.toString(newV));
System.out.print("Array values for: ");
for (int index = 0; index < newV.length; ++index) {
System.out.println(newV[index]);
}
System.out.print("Array values foreach: ");
for (double value : newV) {
System.out.println(value);
}
}