2015-04-02 91 views
0

有人可以告诉我什么是我没有看到。 从书中练习。 创建一个名为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

你没有在代码中调用sortArray。缺少'main'? – 2015-04-02 07:54:11

+0

@Adrian,即时通讯使用BlueJ IDE – 2015-04-02 07:55:28

+0

@RyanG这不是问题。你说“我将一个int []值传递给需要int []值的方法” - 你在哪里做的?你没有发布你的''main''方法。 – f1sh 2015-04-02 07:57:31

回答

0

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

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

下一步缺少的代码,你没有张贴更换

public ArraysData(){ 
    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,以解决您需要传递可通过使用方法theValues()可用的AbcArray中的值。因此,您的代码将如下所示:

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

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

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

+0

抱歉,关于错误的构造函数,已编辑。 – 2015-04-02 08:11:33

+0

这个答案为什么downvoted? – f1sh 2015-04-02 08:17:43

+1

@ f1sh因为这个答案也断言,OP需要一个'main'方法,它是_wrong_。如果他删除,我会删除我的投票,因为其他的东西是正确的。 – Tom 2015-04-02 08:34:01