2013-10-06 76 views
-2

我需要幫助使用冒泡排序算法以字母順序對此數組進行排序。Java String Bubble Sorting

我的代碼是:

public class Strings 
{ 
    public static void main(String[] args) 
    { 
     Scanner reader = new Scanner(System.in); 
     String tempStr; 


     System.out.print("Enter the strings > "); 
     String s1 = new String(reader.nextLine()); 

     String[] t1 = s1.split(", "); 

     for (int t=0; t<t1.length-1; t++) 
     { 
      for (int i = 0; i<t1.length -1; i++) 
      { 
       if(t1[i+1].compareTo(t1[1+1])>0) 
       { 
        tempStr = t1[i]; 
        t1[i] = t1[i+1]; 
        t1[i+1] = tempStr; 
       } 
      } 

     } 

     for(int i=0;i<t1.length;i++) 
     { 
      System.out.println(t1[i]); 
     } 
    } 
} 

代碼編譯,但它並不按字母排序。請幫幫我。

+0

您是否試圖實施冒泡排序?這對我來說't1 [i + 1] .compareTo(t1 [1 + 1])'尤其是'1 + 1'部分看起來很腥。另外,確保在for循環中使用數組中正確的索引。 – toniedzwiedz

+0

我無法使用任何排序方法。我必須手動按字母排序字符串。 – user2844549

+1

無論選擇哪種類型的「手動」排序,它都有一些名稱。只需閱讀它們。您可能最終會進行冒泡排序或插入排序。泡沫排序不是某種「排序方法」。你會把它整理一下。 – toniedzwiedz

回答

2

你的代碼有三個錯誤。

第一個錯誤是在內循環中,在您執行檢查語句的位置,應該是i < t1.length - t -1而不是i < t1.length -1。你減去t,因爲你不想遍歷整個數組,只有它的第一部分。

第二個和第三個錯誤在if語句中。您需要將大於符號的符號變成小於符號,因爲您設置了compareTo方法的方式會返回負數。

此行的另一個錯誤是,在放置1 + 1的compareTo參數時,它實際上應該只是i,因爲您希望比它所比較的​​對象少一個。

固定工作代碼如下(註釋是你原來有什麼):

public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     String tempStr; 

     System.out.print("Enter the strings > "); 
     String s1 = new String(reader.nextLine()); 

     String[] t1 = s1.split(", "); 

     for (int t = 0; t < t1.length - 1; t++) { 
      for (int i= 0; i < t1.length - t -1; i++) { 
       if(t1[i+1].compareTo(t1[i])<0) { 
        tempStr = t1[i]; 
        t1[i] = t1[i + 1]; 
        t1[i + 1] = tempStr; 
       } 
      } 
     } 
     for (int i = 0; i < t1.length; i++) { 
      System.out.println(t1[i]); 
     } 
    } 
+1

我相信它在短期內會有所幫助,除非他真的想做自己的功課。 –

+0

我試圖解釋他的代碼@DaveNewton做了什麼錯誤。 –

0

請更改

String[] t1 = s1.split(", "); 

String[] t1 = s1.split(""); 

這將解決這一問題。

+1

這是無稽之談。它可以解決你的問題,因爲你的輸入是錯誤的,但這並不意味着這會解決某人的問題。 – Tom