以下代码返回一个新数组,其中包含其参数的分量总和(假设它们的长度相同),例如,如果输入数组为 {0,1,2} 和 {2,2,3},则out out 将为 {2,3,5},如果输入数组具有不同数量的元素,该方法应返回 null。
public class Sum
{
public static double[] sum(double a[], double b[]){
if (a.length != b.length)
return null;
int[] s = new double[a.length];
for(int i=0; i<a.length; i++)
s[i] = a[i] + b[i];
return s;
}
public static void main(String[] args) {
//calling the method to seek if compiles
double[] results = Sum.sum(new double[] {0,1,2} + {2,2,3});
//printing the results
System.out.println(java.util.Arrays.toString(results));
}
}
正如我之前提到的,通常当我运行上面的程序代码时,我应该得到 {2,3,5} 结果,但我什么也没得到。事实上,我无法在 BlueJ 中编译它,我不断收到错误消息:非法开始该行的表达式: double[] results = Sum.sum(new double[] {0,1,2} + { 2,2,3});
所以我假设我犯了语法错误,但我不太确定,我怎样才能摆脱它,有什么建议吗?
最佳答案
您的代码中有两个问题:
+
仅允许对原始数字类型使用运算符。在这行代码中:Sum.sum(new double[] {0,1,2} + {2,2,3});
您正在尝试申请
+
double[]
的运算符变量,这是不允许的,从而得到异常。由于该方法已经接受 2 个参数double[]
,然后发送double[]
s,使用逗号,
分隔它们.:Sum.sum(new double[] {0,1,2}, new double[] {2,2,3});
这行代码:
int[] s = new double[a.length];
不能用另一个基本类型的数组来初始化一个基本类型的数组。
int[]
和double[]
是完全不同的类。因此,请更改变量的类型声明:double[] s = new double[a.length];
更多信息:
关于java - BlueJ/Java 程序返回一个新数组,其中包含其参数的组件总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23397622/