有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

有人能告诉我我没看到什么吗。 从书本上练习。 创建一个名为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) 个答案

  1. # 1 楼答案

    代码的第一个问题是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()方法