[英]Getting weird output from sorting string object arrays (code provided)?
注意:不使用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輸出: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;
}
我認為您的錯誤可能在於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”。
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 );`
我認為這應該工作,但是我沒有其余的代碼。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.