将参数传递给方法不兼容的类型

时间:2015-04-02 07:52:20

标签: java sorting parameters parameter-passing

有人可以告诉我,我没有看到什么。 从书上练习。 创建一个名为SortingTest的类。在其中,创建一个接受int值数组作为参数的方法,并将已排序的元素打印到终端。(最小元素优先)

尝试编译时,我收到一个错误:不兼容的类型。 AbcArray无法转换为int [] 根据我的理解,我将int []值传递给期望int []值的方法。 (如果我的错误是如此明显,我还在道歉,我很抱歉)

public class AbcArray {

   private int[] myArray;

   public AbcArray(){
     myArray = new int[]{55,58,57,54,56};
   }

   public int[] theValues(){
     return myArray;
   }
}

import java.util.Arrays;

public class SortingTest{

  public SortingTest() {}

  public void sortArray(int[] outsideArray){
    Arrays.sort(outsideArray);
    System.out.println(outsideArray);
  }
}

1 个答案:

答案 0 :(得分:0)

您的代码的第一个问题是AbcArray代码中的错误构造函数。你需要替换

public ArraysData(){
    myArray = new int[]{55,58,57,54,56};
}

public AbcArray(){
    myArray = new int[]{55,58,57,54,56};
}

下一步是缺少您没有发布的代码。我们假设它看起来如下:

public class Main{
    public static void main(String[] args){
        AbcArray a = new AbcArray();
        SortingTest st = new SortingTest();

        st.sortArray(a);
    }
}

尝试构建此代码会导致actual argument AbcArray cannot be converted to int[] by method invocation conversion。发生这种情况是因为您要将整个班级AbcArray传递给方法sortArray以修复您需要传递AbcArray中使用方法theValues()可用的值的问题。所以你的代码看起来像这样:

public class Main{
    public static void main(String[] args){
        AbcArray a = new AbcArray();
        SortingTest st = new SortingTest();

        st.sortArray(a.theValues());
    }
}

此外,您无法将数组打印到标准输出中。在打印任何内容之前,请先查看Arrays.toString()方法。