2017-04-24 91 views
-1
import java.util.Scanner; 

public class alphabetical { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner Alphabet= new Scanner(System.in); 
    System.out.println("Input First Name"); 
    String UserInput= Alphabet.next(); 
    System.out.println("Input second name"); 
    String UserInput2= Alphabet.next(); 
    System.out.println("Input third name"); 
    String UserInput3= Alphabet.next(); 
    System.out.println(alpha)UserInput,UserInput2,UserInput3)); 
} 

    public static void alpha(String fromUser,String fromUser2, String fromUser3) 
    { 
    if (fromUser.compareTo(fromUser2)>0) 
    { 
     System.out.println(fromUser2); 
    } 
    else if(fromUser.compareTo(fromUser3)>0) 
    { 
     System.out.println(fromUser3); 
    } 
    else if (fromUser2.compareTo(fromUser3)>0) 
    { 
     System.out.println(fromUser3); 
    } 
    else if (fromUser2.compareTo(fromUser)>0) 
    { 
     System.out.println(fromUser); 
    } 
    else if (fromUser3.compareTo(fromUser)>0) 
    { 
     System.out.println(fromUser); 
    } 
    else if (fromUser3.compareTo(fromUser2)>0) 
    { 
     System.out.println(fromUser2); 
    } 

} 

}如何使用功能

所以這是我的代碼,但我不知道該按字母順序排列Java中的字符串我在做什麼錯。我一直在這個工作了一段時間,我需要一個代碼,將允許用戶輸入3個名稱,然後按字母順序排序名稱

此程序的要求是讓用戶輸入3個字符串和使用一個需要3個字符串的函數按字母順序打印它們 - 返回類型應該是無效的 - 這意味着沒有任何返回到main的函數,函數將按照字母順序打印出三個單詞,應該有6個例子需要擔心(想想If,elseif ... else)。 下面是一個示例輸出可能是什麼樣子的控制檯(>表示它在console--你不會真正看到這一點):

輸入小寫第一串

真棒

輸入第二小寫字符串

虛假

輸入第三小寫字符串

寒冷

(下發生在void函數)

下面是按字母順序排列你的話

真棒

寒冷

+3

存放在'的String []'或'名單'的userinput和使用'陣列#sort'或'集合#排序' –

+0

這與Eclipse無關。你的問題是純粹的'Java'。你能刪除'eclipse'標籤並編輯標題嗎? –

+0

[Java:排序數組]的可能重複(http://stackoverflow.com/questions/8938235/java-sort-an-array)和第二個鏈接:http://stackoverflow.com/questions/6957631/sort -java-collection – Tom

回答

1

,我希望你的教授是讓你寫一個囉嗦的解決方案,這樣他就可以「兜底」:你可以用拉姆達排序字符串的集合更好的,基於陣列或列表的版本。

對於三個項目,這是真的,有六種情況下,你可以「只」寫if/else條款爲每個:

// case 1 - abc 
    if(lessThan(a,b) && lessThan(b,c)) { 
    System.out.println(a + " " + b + " " + c); 
    } 
    // case 2 - acb 
    else if(lessThan(a,c) && lessThan(c,b)) { 
    System.out.println(a + " " + c + " " + b); 
    } 
    // case 3 - bac 
    else if(lessThan(b,a) && lessThan(a,c)) { 
    System.out.println(b + " " + a + " " + c); 
    } 

...等,爲每個abc,acb,bac,bca,cab,cba。爲了我自己的理智,我假設存在lessThan()方法,其中包含a.compareTo(b) < 0 - 但如果您的教授還禁止您編寫幫助方法,則可以直接使用compareTo()

由於問題的措辭,我想這是預期的 - 這不是一種明智的方式來實施一種排序,但它可能是建立更好的基礎。它也允許您直接計算正在進行的比較次數,這可能會導致一些初學者對算法成本的洞察。


如果你允許使用一個數組,你被允許使用Java提供一種例行公事,那麼只需把值到一個數組,排序並打印:

public static void alpha(String a,String b, String c) { 
     String[] array = new String[] {a,b,c}; 
     Arrays.sort(array); 
     System.out.println(array[0] + " " + array[1] + " " + array[2]); 
    } 
0

所以你可以,只要你把它放在一個方法用什麼...

public static void alpha(String fromUser,String fromUser2, String fromUser3){ 
    String[] sArray = {fromUser, fromUser2, fromUser3}; 
    Arrays.sort(sArray); 
    for (String s : sArray){ 
     System.out.print(s + " "); 
    } 
} 
0

在java中8很簡單。如果你真的不能使用數組或列表

public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner Alphabet = new Scanner(System.in); 
     System.out.println("Input First Name"); 
     String UserInput = Alphabet.next(); 
     System.out.println("Input second name"); 
     String UserInput2 = Alphabet.next(); 
     System.out.println("Input third name"); 
     String UserInput3 = Alphabet.next(); 
     List<String> list = Arrays.asList(UserInput, UserInput2, UserInput3); 
     list.sort((String in1, String in2) -> in1.compareTo(in2)); 
     list.forEach(System.out::println); 

    } 
+0

我無法使用數組 –

0

您已經接近,但您需要在生成輸出之前將您的字符串與兩個其他字符串進行比較。一種方法是爲你的三行輸出創建一個單獨的if/else if/else塊。例如,以下是Strings s1,s2,s3的中間一行。

// First Word 
. . . 
// Second Word 
if ((s1.compareTo(s2) >= 0) && (s1.compareTo(s3) <= 0)) { 
    System.out.println(s1); 
} else if ((s2.compareTo(s1) >= 0) && (s2.compareTo(s3) <= 0)) { 
    System.out.println(s2); 
} else { 
    System.out.println(s3); 
} 
// Third Word 
. . . 

另一種方法是考慮如何安排三件事的每個排列。 {abc,acb,bac,bca,cab,cba}。當你只有三件事情要安排時,這是可以控制的,但是當你添加更多東西時會變得很討厭。

if ((s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)<=0)) { 
    // abc 
    System.out.println(s1); 
    System.out.println(s2); 
    System.out.println(s3); 
} else if (s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)>=0) { 
    // acb 
    System.out.println(s1); 
    System.out.println(s3); 
    System.out.println(s2); 
} else if . . . 
+0

感謝此工作 –

0

用java 8流,你可以那樣做:

public static void alpha(String fromUser,String fromUser2, String fromUser3) { 
    Stream.of(fromUser, fromUser2, fromUser3).sorted().forEach(System.out::println); 
}