2017-08-18 3 views
-5
/* This program sorts out name in orders from 
their first alphabetical orders .*/ 

package nameorder; 

public class NameOrder { 

    public static void sayName(String a, String s, String d){ 
     System.out.println("Name By Alphabetical Order: \n1."+a+"\n"+"2."+s+"\n3."+d+"\n"); 

    } 

    public static void stringOrder(String a ,String s ,String d){ 
     int i= a.compareTo(s) ; 
     int j= a.compareTo(d) ; 
     int k= d.compareTo(s) ; 
     int l= d.compareTo(a) ; 
     String first=""; 
     String second=""; 
     String third=""; 
      if(i<0&&j<0){ 
       first=a; 
        if(k>0&&l>0){ 
         third = d; 
         second = s; 
        }else{ 
         second = d; 
         third = s; 
        } 
      }else if(i>0&&j>0){ 
       third=a; 
        if(k<0&&l<0){ 
         first = d; 
         second = s; 
        }else{ 
         second = s; 
         first = d; 
        } 
      }else{ 
       second=a; 
        if(k<0&&l<0){ 
         first = d; 
         third = s; 
        }else{ 
         first = s; 
         third = d; 
        } 
      } 
     sayName(first,second,third);  
    } 

    public static void main(String[] args) { 
     String a ="C"; 
     String s ="a"; 
     String d ="h"; 
     stringOrder(a.toUpperCase(),s.toUpperCase(),d.toUpperCase()); 
    } 

} 

Ich frage mich nur, ob ich das richtig mache oder es gibt eine bessere kürzere Version dafür?Wie kann ich diesen Java-Code verkürzen?

+5

[CodeReview.SE] (https://codereview.stackexchange.com/) – tkausl

+2

[_ "Warum ist" Kann mir jemand helfen? "Keine eigentliche Frage?" _] (Https://meta.stackoverflow.com/questions/284236/why-is-cann-someone-help-me-not -an-actual-question), auch dies ist eher eine Code-Review-Anfrage, die hier nicht zum Thema gehört. –

+0

https://stackoverflow.com/questions/13056178/java-sorting-an-string-array-by-a-substring-of-characters das kann helfen – Kaushal

Antwort

0

Nur aus der Perspektive der "Sortierung dreier Strings" können Sie nur drei Vergleiche durchführen und alle diese Temp-Variablen verlieren.

public static void stringOrder(String a, String s, String d) { 
    String tmp; 

    if (a.compareTo(s) > 0) { 
     tmp = a; 
     a = s; 
     s = tmp; 
    } 

    if (a.compareTo(d) > 0) { 
     tmp = a; 
     a = d; 
     d = tmp; 
    } 

    if (s.compareTo(d) > 0) { 
     tmp = s; 
     s = d; 
     d = tmp; 
    } 

    sayName(a, s, d); 
} 

Aber aus Wartbarkeit Perspektive, verwenden Sie einfach die in Java gebaut Einrichtungen mehrere Strings zu einem Zeitpunkt, zu sortieren:

public static void stringOrder(String a, String s, String d) { 
    String [] arr = {a, s, d}; 
    java.util.ArrayList<String> list = new ArrayList<String>(Arrays.asList(arr)); 
    java.util.Collections.sort(list); 
    sayName(list.get(0), list.get(1), list.get(2)); 
} 
0

Ich habe Collections.List hier, so dass Ihr Code ist dynamischer, so dass für jede Menge Menge von Strings bestellt werden kann. Mit deinem hast du fest programmiert, dass 3 Strings eingegeben werden. Hier können Sie beliebig viele Strings innerhalb der Hauptfunktion eingeben.

Die Collections.Sort-Methode sortiert Ihre Liste auf die effizienteste Weise. Wann immer Sie können, verwenden Sie Methoden, die von den Java-Entwicklern entwickelt wurden, da sie diese Funktionen jahrelang optimiert haben.

Verwandte Themen