这是我的代码:
public class ArrayFunctionExamples {
// returns the mean of the array
public static double mean(double[] a) {
double sum = 0.0;
for (int i = 0; i < a.length; i++)
sum += a[i];
return sum / a.length;
}
// swaps array elements i and j
public static void exchange(String[] a, int i, int j) {
String temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void main(String[] args) {
double[] a = new double[args.length];
for (int i = 0; i < args.length; i++) {
int arg = Integer.parseInt(args[i]);
a[i] = arg;
}
double value = mean(a);
System.out.println(value);
//Now, I want to print an new array by using the method of exchange
for (int i=0; i<a.length;i++) {
a[i] = Double.toString(a[i]);
}
String[] b = exchange(a,0,1);
for (int i=1;i<b.length;i++) {
System.out.println(b[i]);
}
}
}
然后;我的mac终端上出现以下错误:
ArrayFunctionExamples.java:78: error: incompatible types: String cannot be converted to double
a[i] = Double.toString(a[i]);
^
ArrayFunctionExamples.java:80: error: incompatible types: double[] cannot be converted to String[]
String[] b = exchange(a,0,1);
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors
对于第一个错误:a [i]已经是双倍;我尝试将其转换为字符串;但是终端告诉我&#39; String不能转换为double&#39; (我的a [i]是一个字符串吗???和方法Double.toString尝试将其转换为double?) 我的第二个错误告诉我a是双倍的。 (我在这里很困惑)
然后我尝试了
String[] b = exchange(args,0,1);
System.out.println(b);
它告诉我void无法转换为String []
无论如何打印我的新阵列而不更改原始交换方法?
答案 0 :(得分:3)
a[i] = Double.toString(a[i]);
左侧a[i]
是double类型的变量。右侧Double.toString(a[i])
是String类型的值。因此,您尝试将String分配给double类型的变量,因此出现错误:您无法将String存储在double类型的变量中,因为String不是double。
第二个错误类似:交换方法的签名是exchange(String[] a, int i, int j)
。所以它期望一个String数组作为第一个参数。您正在通过a
。 a
被声明为double[] a
。所以它是一个双打数组,而不是一个字符串数组。