簡體   English   中英

從排序字符串對象數組(提供的代碼)中得到奇怪的輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM