2014-03-31 41 views
1

我試圖按降序和升序排列輸入到數組中的字符串數據。陣列中的氣泡排序字符串

以下是到目前爲止的代碼:

import java.util.*; 
public class nextLineArray 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     String names[]=new String[12]; 
     System.out.println("Enter the 12 names: "); 
     //Load Array 
     for(int i = 0; i < 12; i++) 
     { 
      names[i] = input.nextLine(); 

     } 
     //Print initial list 
     System.out.println("List of names via input:"+ names); 

     //Print descending order list 
     String descSort; 
     descSort=bubbleSortDesc(names); 
     System.out.println("Names listed sorted in descending order (via BubbleSort): "+descSort); 

    } 
    public static String bubbleSortDesc(String[] names) 
    { 
     String temp; 
     int passNum, i, result; 
     for(passNum=1; passNum <= 11; passNum++) 
     { 
      for(i = 0; i<=(11-passNum); i++) 
      { 
       result=names[i].compareToIgnoreCase(names[i+1]); 
       if(result>0) 
       { 
        temp=names[i]; 
        names[i]=names[i+1]; 
        names[i+1]=temp; 
       } 
      } 
     } 
     return names; 

    } 
} 

當我嘗試到排序的數組返回到主法它給了我下面的錯誤返回行:

Incompatible Types 

我們在線教師剛開始使用多種方法和數組的同時,這很令人困惑......請原諒我的錯誤是否顯而易見。

編輯:我有固定的初始問題,感謝亞歷山大·桑托斯在評論,我現在遇到了一個問題,輸入數據後,執行程序時,而不是打印數組中的字符串它打印出

[Ljava.lang.String;@6d782f7c 

回答

1

看一看方法

public static String bubbleSortDesc(String[] names) 

該方法的返回應該是一個字符串(只有一個),但你正在返回參數「名字」,這是一個字符串數組。 String之後的「[]」將其標識爲數組。

我不會爲你做你的功課,所以提示:檢查方法bubbleSortDesc的返回類型是否應該是一個String或一個String數組。

祝你好運。

+0

謝謝你,我解決了一切,並設法讓程序編譯和執行。但是,在聲明和排序後應該打印數組的行會打印出來。 你能否告訴我爲什麼會發生這種情況? – user3385542

+0

當您在對象上執行打印時,它會打印對該對象的引用。在這種情況下,您想要打印該對象的值,這意味着要創建一個for循環來遍歷該對象,併爲每個值打印該值。 –

0

公共靜態字符串bubbleSortDesc(字符串[]名稱)

應該是

公共靜態字符串[] bubbleSortDesc(字符串[]名稱)

並且還申報descSort作爲字符串數組。

此外,您只是打印數組對象。這不會爲您打印清單。您已遍歷數組。

在你的代碼包含此:

for (String name:names) 
{ 
System.out.println(name); 
} 

做descSort也同樣....

0

有2個點來解決。首先,你應該返回字符串數組

public static String[] bubbleSortDesc(String[] names) 

,因此,你應該把它定義是這樣的:

String descSort[]; 
0

您可以將其更改爲以下解決您的打印命令:

System.out.println("Names listed sorted in descending order (via BubbleSort): "+ java.util.Arrays.deepToString(descSort)); 

如果你想要堅韌不拔,descSort是一個String []。在Java中,當你將String []轉換爲一個String時,它會給你瘋狂的字符串表示。您必須將數組中的每個條目轉換爲單獨的字符串。幸運的是,deepToString方法將爲你做到這一點。