我使用扫描仪输入整数列表。将它们放在一个列表中,然后实现我自己的分拣机,从最小到最大排序。在主文件中使用代码进行排序
Sorting.selectionSort(intList);
我得到的错误是
“排序类型中的方法selectionSort(Comparable [])不适用于参数(int [])
public static void selectionSort (Comparable[] list)
{
int min;
Comparable temp;
for (int index = 0; index < list.length-1; index++)
{
min = index;
for (int scan = index+1; scan < list.length; scan++)
if (list[scan].compareTo(list[min]) < 0)
min = scan;
// Swap the values
temp = list[min];
list[min] = list[index];
list[index] = temp;
}
}
如果我要使用
if (intList[scan].compareTo(intList[min]) < 0)
我将得到的错误是:
是“无法在原始类型的int上调用compareTo”
答案 0 :(得分:1)
您无法通过调用方法来比较任何基元,在本例中为.compareTo
方法。
您获得的错误恰恰是什么意思,如果您想使用方法比较它们,则必须使用对象包装器Integer
。欢呼声。
答案 1 :(得分:1)
只是在思考为什么你不想使用==运算符,因为你只想比较2 int。
例如:
int intCompare(){
int[] intArray = {1, 10, 2, 3, 4, 5, 10, 6, 7, 8, 9};
for(int x=0; x < intArray.length-1; x++){
if(intArray[x] == intArray[x+1]){
return intArray[x];
}
}
return -1;
}
答案 2 :(得分:0)
使用Integer
代替int
。集合中不允许使用基元。请查看Java中的Wrapper类。在Java中,每个基元都有一个Wrapper类。集合需要引用对象,它们不能包含真实的基元。示例:Integer
是int
原语
答案 3 :(得分:0)
如果我们考虑,基本上对于任何集合,我们不能添加任何原语。无论我们想要添加到集合中,它都必须是Object类型。所以,即使你已经隐式地将一个int添加到列表中,原始int也会被自动装箱到Integer包装器对象。所以我认为你定义的方法错误的参数为可比较的[],它应该只接收List。
所以检查一下。如果您将输入结构的代码共享到列表中,那么我们可以轻松回答这个