Java 在使用插入排序时,如何在末尾放置较大的单词?

Java 在使用插入排序时,如何在末尾放置较大的单词?,java,arrays,insertion-sort,compareto,Java,Arrays,Insertion Sort,Compareto,我正在编写一些代码,将我的字符串按字母顺序组织起来,但我意识到,当一个单词比所有其他单词都大时,它会把它放在前面。我怎样才能把它放在单词列表的后面呢 public class SortingText { public static void main(String[] args) { int i,j; String key; String[] inputArray = {"Fourscore","

我正在编写一些代码,将我的字符串按字母顺序组织起来,但我意识到,当一个单词比所有其他单词都大时,它会把它放在前面。我怎样才能把它放在单词列表的后面呢


public class SortingText {
    public static void main(String[] args) {
          int i,j;
          String key;
          String[] inputArray = {"Fourscore","and","seven","years","ago","our"};
          System.out.println(Arrays.toString(inputArray));
          for (j = 1; j < inputArray.length; j++) { //the condition has changed
            key = inputArray[j];
            i = j - 1;
            while (i >= 0) {
              if (key.compareTo(inputArray[i]) > 0) {//here too
                break;
              }
              inputArray[i + 1] = inputArray[i];
              i--;
            }
            inputArray[i + 1] = key;
            System.out.println(Arrays.toString(inputArray));
          }
          System.out.println(Arrays.toString(inputArray));
        }
}

公共类排序文本{
公共静态void main(字符串[]args){
int i,j;
字符串键;
String[]inputArray={“八十”,“和”,“七”,“年”,“以前”,“我们的”};
System.out.println(Arrays.toString(inputArray));
对于(j=1;j=0){
如果(key.compareTo(inputArray[i])>0{//
打破
}
输入阵列[i+1]=输入阵列[i];
我--;
}
输入阵列[i+1]=键;
System.out.println(Arrays.toString(inputArray));
}
System.out.println(Arrays.toString(inputArray));
}
}

此时,您可以使用compareTo来比较这两个项目。让我们更新此以使用比较器:

// Sort by the natural order
Comparator<string> cmp = Comparator.naturalOrder();
...
if (cmp.compare(key, inputArray[i]) > 0) {//here too
Comparator cmp =  String.CASE_INSENSITIVE_ORDER;
// Result = [ago, and, Fourscore, our, seven, years]
String.compareTo()
区分大小写,意思是
A
A
小。这就是为什么
“Fourscore”
位于排序数组的开头

在比较元素时,可以使用
compareToIgnoreCase()
而不是
compareTo()
忽略大小写:

if(key.compareTignoreCase(inputArray[i])>0){

你的问题不是字长,而是你不区分大小写,也不区分大写和非大写字母。在你的逻辑中,大写字母是先排序的。试着将第一个单词改为“fourscore”,你会发现不管它的长度如何,它都不会在开头排序