所以我使用这段代码来排序大量无序单词。我将它们保存为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.
}
}
我无法弄明白!任何帮助都非常感谢,我敢打赌它很简单。您知道,这是我正在处理的更大程序的代码片段。
答案 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接口。我认为这将解决您的问题: