注意:不使用arraylist,hashset,set或导入除Scanner之外的任何其他包。
public static String sorting(){
for (int i = 0; i < pigArray.length; i++){
for (int k = i + 1; k <pigArray.length; k++){
if(pigArray[k].getName().trim().compareTo(pigArray[i].getName().trim())< 0){
String temp = pigArray[i].getName();
pigArray[i].setName( pigArray[k].getName );
pigrray[k].setName(temp);
}
}
}
}
String sorted = "";
for (int m = 0; m < pigArray.length; m++){
sorted = sorted + "\n" + pigArray[m].getSortedName();
}
return sorted;
}
基本上我的代码会发生的事情是,如果用户输入的每个输入都是乱序的(我的意思是每一个输入),程序就会对它们进行排序。
示例(非实际输入,但有说明): 输入:e,c,b,输出:a,b,c,d
但是,即使其中一个位于正确的位置,程序也会将其替换为null。
实施例: 输入:a,e,d,c输出:null,c,d,e
我不知道为什么会这样。输入数量无关紧要。
任何提示都表示赞赏。谢谢。
编辑:
private String name;
public void setName(String name){
this.name = name;
}
public String getSortedName() {
return name;
}
答案 0 :(得分:0)
我认为您的错误可能在于您实施pigArray。
我更改了你的代码,以便pigArray只是一个String
数组,它对我的值进行了排序。
public class Test {
private static String[] pigArray;
public static String sorting(){
pigArray = new String[]{"a", "e", "d", "c"};
for (int i = 0; i < pigArray.length; i++){
for (int k = i + 1; k <pigArray.length; k++){
if(pigArray[k].trim().compareTo(pigArray[i].trim())< 0){
String temp = pigArray[i];
pigArray[i]=( pigArray[k] );
pigArray[k]=(temp);
}
}
}
String sorted = "";
for (int m = 0; m < pigArray.length; m++){
sorted = sorted + "\n" + pigArray[m];
}
return sorted;
}
public static void main(String args[]) {
System.out.print(Test.sorting());
}
}
按预期返回“acde”。
答案 1 :(得分:0)
if(pigArray[k].getName().trim().compareTo(pigArray[i].getName().trim())< 0){
String temp = pigArray[i].getName();
pigArray[i].setName( pigArray[k].getName );
pigrray[k].setName(temp);
}
elseif(pigArray[k].getName().trim().compareTo(pigArray[i].getName().trim())> 0){
String temp = pigArray[k].getName();
pigArray[k].setName( pigArray[i].getName );
pigrray[i].setName(temp);
}
else
pigArray[i].setName( pigArray[i].getName );`
我认为应该可行,但我不会使用其他代码。希望它有所帮助。