【问题标题】:How to compare two ints in a list?如何比较列表中的两个整数?
【发布时间】:2014-03-23 15:36:17
【问题描述】:

我使用扫描仪获取整数列表。将它们放在一个列表中,然后实现我自己的排序器将它们从最小到最大排序。在主文件中使用代码排序时

Sorting.selectionSort(intList);

我得到的错误是

"Sorting类型中的方法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”

【问题讨论】:

  • 将 int 更改为 Interger..

标签: java sorting


【解决方案1】:

您不能通过调用方法来比较任何原语,在本例中是.compareTo 方法。

你得到的错误正是它的意思,如果你想用一种方法比较它们,你必须改用对象包装器Integer。干杯。

【讨论】:

    【解决方案2】:

    只是思考为什么你不想使用 == 运算符,因为你只想比较 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;
            }
    

    【讨论】:

      【解决方案3】:

      使用Integer 代替int。集合中不允许使用基元。请查看 Java 中的 Wrapper 类。在 Java 中,每个原语都有一个 Wrapper 类。集合需要对对象的引用,它们不能包含真正的原语。示例:Integerint 原语的 Wrapper 类

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多