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
如果您能尽早学会格式化代码,几个月后您就会爱上自己。