Java字符串插入排序未按预期工作

Java字符串插入排序未按预期工作,java,insertion-sort,Java,Insertion Sort,我的目标是创建一个工作插入排序,它可以使用main方法中提供给我们的数组来处理字符串和整数。对于这个例子,我称之为列表 public class insort{ public static void main(String[]list){ sort(list); printsort(list); }//main public static void sort(String[]list){ for (int index = 1; index < list.length; in

我的目标是创建一个工作插入排序,它可以使用main方法中提供给我们的数组来处理字符串和整数。对于这个例子,我称之为列表

public class insort{

public static void main(String[]list){
  sort(list);
  printsort(list);
}//main

public static void sort(String[]list){
  for (int index = 1; index < list.length; index++){
    int key = list[index];
    int position = index;
    while (position > 0 && key.compareTo(list[position-1]) < 0){
        list[position] = list[position-1];
        position--;
    }//while
  list[position] = key;
 }//for
}//sort

public static void printsort(String[]list){
  while ( i < list.length){
    System.out.print(i);
  }//while
 }//printsort
}//insort
insort中的公共类{
公共静态void main(字符串[]列表){
排序(列表);
打印排序(列表);
}//主要
公共静态无效排序(字符串[]列表){
for(int index=1;index0&&key.compareTo(列表[position-1])<0){
列表[位置]=列表[位置-1];
位置--;
}//当
列表[位置]=键;
}//为了
}//分类
公共静态void打印排序(字符串[]列表){
while(i
你混合了一些东西。对
int
Integer
对象进行排序要比对
String
对象(尤其是需要确保
String[]list
仅包含数字)进行排序容易得多,但是如果要对字符串对象进行排序,则需要更改以下几项:

  • 您尝试将对
    字符串的引用
    对象分配给基元变量
    int

    int key = list[index];
    
    int key = list[index];
    (key.compareTo(list[position-1])) < 0
    
    例如,您可以将其更改为:

    int key = Integer.valueOf(list[index]);
    
    或者将列表从
    String[]
    更改为
    int[]

  • 您尝试对基本变量
    int
    使用
    compareTo()
    方法:

    int key = list[index];
    
    int key = list[index];
    (key.compareTo(list[position-1])) < 0
    
    或者,如果您想继续使用
    int
    变量,请尝试使用:

    key < list[position-1]
    
    尝试:

    key < list[position-1]
    
    for(String element : list){
        System.out.println(element);
    }
    
    要打印
    列表的每个元素

  • 您还将
    main
    方法从
    main(String[]args)
    更改为
    main(String[]list)
    ,并尝试对
    String[]list
    使用排序。您应该创建新的
    String[]
    数组,并尝试使用它,例如:

    String[] list = {"4","6","1","8"};
    sort(list);
    

    成功编译需要注意的一些事项:

  • “printsort”方法中的“i”未声明和初始化。在启动while循环之前,需要执行类似于
    inti=0
    的操作

  • 此外,while循环变量需要在循环内部更新,以满足结束条件。结束条件将帮助您阻止循环进入无限循环。因此,在System.out.print()之后需要一个
    i++

  • 在System.out.print()中,您正在传递变量
    i
    ,该变量将打印从0到长度-1的数字,而不是列表数组中的字符串。因此,您需要类似于
    System.out.print(list[i])
    的东西

  • 在“sort”方法中,您有
    int key=list[index]
    ,RHS将返回字符串对象,而不是您在LHS上的int<代码>所以字符串key=list[index]就是您需要的

  • 我还没有检查插入排序的代码是否正常工作。刚才指出了一些语法错误,这将帮助您编译代码


    祝您一切顺利:)

    您有什么问题吗?您的代码输出是什么?@eis嗨,很遗憾,我无法编译代码,因为我正在将字符串与整数进行比较。我不确定如何继续。
    int key=list[index]//这将返回一个字符串。不是int。编译器将显示错误。可能是@ThanigaiArasu的副本。我感谢您的评论和链接。非常感谢!我真的很感激,谢谢。这有助于我更好地理解排序。