如何比较列表中的两个整数?

时间:2014-03-23 15:36:18

标签: java sorting

我使用扫描仪输入整数列表。将它们放在一个列表中,然后实现我自己的分拣机,从最小到最大排序。在主文件中使用代码进行排序

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”

4 个答案:

答案 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类。集合需要引用对象,它们不能包含真实的基元。示例:Integerint原语

的Wrapper类

答案 3 :(得分:0)

如果我们考虑,基本上对于任何集合,我们不能添加任何原语。无论我们想要添加到集合中,它都必须是Object类型。所以,即使你已经隐式地将一个int添加到列表中,原始int也会被自动装箱到Integer包装器对象。所以我认为你定义的方法错误的参数为可比较的[],它应该只接收List。

所以检查一下。如果您将输入结构的代码共享到列表中,那么我们可以轻松回答这个