Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误:类型选择中的方法排序(Compariable[])不适用于参数(int[])_Java_Algorithm_Compiler Errors - Fatal编程技术网

Java 错误:类型选择中的方法排序(Compariable[])不适用于参数(int[])

Java 错误:类型选择中的方法排序(Compariable[])不适用于参数(int[]),java,algorithm,compiler-errors,Java,Algorithm,Compiler Errors,这就是我在尝试写出选择排序时遇到的错误。有人能指出我做错了什么吗。我的代码如下。谢谢 public class Selection { static void sort(Comparable[] a) { int N = a.length; for (int i = 0; i < N; i++) { int min = i; for (int j = i+1; j < N; j++) if (

这就是我在尝试写出选择排序时遇到的错误。有人能指出我做错了什么吗。我的代码如下。谢谢

    public class Selection
    {
        static void sort(Comparable[] a)
    {
    int N = a.length;
    for (int i = 0; i < N; i++)
    {
    int min = i;
     for (int j = i+1; j < N; j++)
     if (less(a[j], a[min]))
     min = j;
     exch(a, i, min);
     }
     }
     private static boolean less(Comparable v, Comparable w)
     { 
     return v.compareTo(w) < 0;   
     }
    private static void exch(Comparable[] a, int i, int j)
    { 
     Comparable temp = a[i];
     a[i] = a[j];
     a[j] = temp;
 }

public static void main(String args[])
{

    int[] ys = {3,4,5,5,22,4,66,4444,33,3,656,544,4};
    Selection.sort(ys);
}


}
公共类选择
{
静态无效排序(可比[]a)
{
int N=a.长度;
对于(int i=0;i
int是一种基本类型,因此无法实现任何接口。这就是为什么不能将int[]传递给期望可比较[]的方法的原因


您可以通过将
ys
更改为整数数组(即Integer[])来克服此错误,因为Integer实现了Comparable。

int
是一种基本数据类型。它不是一个类,并且不实现
compariable


您应该改为使用,它确实实现了
Comparable

Comparable与对象一起工作,并且正如您所知,
int
不是对象
int[]
解析为
单个对象
而不是对象数组


如果将
ys
定义为
Integer[]
,则将获得预期的对象数组。

如前面的asnwers所述,您不能将
int
应用于
Comparable
,但是如果您仍然希望使用原语并使用
Integer
而不是实现
Comparable
Comparable
,编译器将隐式地将
int
转换为
Integer

static void sort(int[] a)
{
    int N = a.length;
    for (int i = 0; i < N; i++)
    {
        int min = i;

        for (int j = i+1; j < N; j++)
            if (less(a[j], a[min]))
                min = j;

        exch(a, i, min);
    }
}

private static boolean less(Integer v, Integer w)
{
    return v.compareTo(w) < 0;
}

private static void exch(int[] a, int i, int j)
{
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}
静态无效排序(int[]a)
{
int N=a.长度;
对于(int i=0;i
如果您能尽早学会格式化代码,几个月后您就会爱上自己。