数组中的位置不允许为int

时间:2013-11-18 19:25:37

标签: java

所以我使用这段代码来排序大量无序单词。我将它们保存为String类型的数组,并希望使用insert方法对其进行排序,因为在我的课程中需要它来理解这个想法。问题是我存储了我想要排序为int(称为temp)的单词的位置,并且它表示不兼容的类型。我理解单词不是整数,但我的代码如下:

      public static void insertionsort() 
{
    for (int outer = 1; outer < array.length; outer++)//Outer=next number to be sorted 
    { 
        int temp = array[outer]; //Stores it for later use
        int inner = outer; // inner used to track shifts 
        while (inner > 0 && array[inner - 1] >= temp) 
        {  
            array[inner] = array[inner - 1];// swaps the number
            inner--;// Decrements
        } //shift them all right until one is smaller 
        array[inner] = temp;//Now it will put the stored number into its ordered position. 
    }
}

我无法弄明白!任何帮助都非常感谢,我敢打赌它很简单。您知道,这是我正在处理的更大程序的代码片段。

3 个答案:

答案 0 :(得分:1)

你自己说过你有String个数组,因此你无法将元素(String)分配给int

声明存储数组元素的任何内容为String,而不是int

String temp = array[outer];

这意味着这种比较不合法:

array[inner - 1] >= temp

因为>=Strings上无效。与compareTo method on String

比较
array[inner - 1].compareTo(temp) >= 0

答案 1 :(得分:0)

如果array是一个String数组,即String [],那么array[outer];将在位置outer返回一个String而不是Integer

答案 2 :(得分:0)

您的问题在于如何比较字符串 - 因为您使用对象(String)填充数组而不是原始数据类型,您需要能够将一个字符串与另一个字符串进行比较。

看一下Comparable和Comparator接口。我认为这将解决您的问题:

Java : Comparable vs Comparator