错误:不兼容的类型:' Something'无法转换为' Something'

时间:2016-12-31 21:09:35

标签: java arrays

这是我的代码:

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 []

无论如何打印我的新阵列而不更改原始交换方法?

1 个答案:

答案 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数组作为第一个参数。您正在通过aa被声明为double[] a。所以它是一个双打数组,而不是一个字符串数组。