2017-03-21 6 views
0

Derzeit bin ich ein Student, der anfängt, Java zu lernen. Ich kenne Arrays oder komplexe Methoden nicht. Mein Lehrer möchte, dass wir es so machen, um die involvierte Logik zu verstehen, also kann ich keine eingebaute Sortierfunktion verwenden. Manchmal funktioniert mein Code. Zum Beispiel, wenn ich "iea" eingabe, druckt es "aei", was korrekt ist. Aber manchmal, wenn ich Eingaben wie "abc" zum Beispiel eintrage, druckt es einfach "c" als den mittleren Wert aus. Hilfe? Ich bin ein Anfänger. Sortieren drei Buchstaben alphabetisch

import java.util.*; 
public class SortThreeLetters { 

    public static void main(String[]args){ 
    Scanner sc = new Scanner(System.in); 
    char largest = ' '; 
    char middle = ' '; 
    char min = ' '; 
    String word; 
    System.out.println("Enter three lower case letters: "); 
    word = sc.nextLine(); 

    char letter1 = word.charAt(0); 
    char letter2 = word.charAt(1); 
    char letter3 = word.charAt(2); 

    if (letter1 > letter2 && letter1 > letter3){ 
     largest = letter1; 

     if(letter2 > letter3){ 
     middle = letter2; 
     min=letter3; 
     } 
     else if (letter3>letter2){ 
     middle = letter3; 
     min=letter2; 
     } 
    } 


    else if (letter2 > letter1 && letter2 > letter3){ 
     largest = letter2; 

     if(letter3>letter1){ 
     letter3=middle; 
     letter1=min; 
     } 
     else if (letter1>letter3){ 
     letter1 = middle; 
     letter3 = min; 
     } 
    } 

    else if (letter3 > letter1 && letter3 > letter2){ 
     largest = letter3; 

     if(letter2>letter1){ 
     letter2 = middle; 
     letter1 = min; 

     } 
     else if (letter1>letter2){ 
     letter1 = middle; 
     letter2 = min; 

     } 
    } 
    System.out.println(min+""+middle+""+largest); 



    } 


} 
+2

Sie setzen "später" und "am größten" später nicht, wenn. 'letter1 = min;' ist nicht dasselbe wie 'min = letter1;' –

+1

Versuchen Sie es in Schritten - finden Sie das kleinste der ersten zwei und dann das kleinste Ihres Ergebnisses und den dritten Buchstaben - es wird Ihnen leichter fallen Folge dem Programm auf diese Weise. – TDG

Antwort

0
if (letter1 > letter2 && letter1 > letter3){ 
    largest = letter1; 

    if(letter2 > letter3){ 
    middle = letter2; 
    min=letter3; 
    } 
    else if (letter3>letter2){ 
    middle = letter3; 
    min=letter2; 
    } 
} 


else if (letter2 > letter1 && letter2 > letter3){ 
    largest = letter2; 

    if(letter3>letter1){ 
    middle=letter3; 
    min=letter1; 
    } 
    else if (letter1>letter3){ 
    middle=letter1; 
    min=letter3; 
    } 
} 

else if (letter3 > letter1 && letter3 > letter2){ 
    largest = letter3; 

    if(letter2>letter1){ 
    middle=letter2; 
    min=letter1; 

    } 
    else if (letter1>letter2){ 
    middle=letter1; 
    min=letter2; 

    } 
} 
0

Ihre Zuweisungsanweisungen sind die Ursache des Problems. Die linke Seite des Zuweisungsoperators = ist der Beauftragte und die rechte Seite des Bedieners ist der Zuordnungswert. Überprüfen Sie den Code in

else if (letter2 > letter1 && letter2 > letter3)

und

else if (letter3 > letter1 && letter3 > letter2)

Sie müssen die Variablen largest, middle, min auf der linken Seite des = Betreiber haben.

Verwandte Themen