2017-06-02 1 views
0

auszuschließen Ich bin sehr neu und durch ein Tutorial, aber wollte es mit einer while-Schleife, so dass das Programm wiederholt, bis "K" ist vom Benutzer eingegeben. Leider scheint dies den Wagenrücklauf und Zeilenvorschub zu lesen, wenn das falsche Zeichen eingegeben wird. Dies bedeutet, dass "WRONG" dreimal anstelle von einmal ausgegeben wird. Gibt es eine Möglichkeit, diese auszuschließen, so dass nur das Zeichen gelesen wird? Vielen Dank im VorausJava: Wie Wagenrücklauf/Zeilenvorschub von System.in.read

class Guess{ 

    public static void main(String args[]) 
    throws java.io.IOException { 
     char ch, answer ='K'; 


     System.out.println("I'm thinking of a letter between A and Z."); 
     System.out.print("Can you guess it:"); 
     ch = (char) System.in.read(); //read a char from the keyboard 

     while (ch != answer) { 
     System.out.println("**WRONG**"); 
     System.out.println ("I'm thinking of a letter between A and Z."); 
     System.out.print("Can you guess it:"); 
     ch = (char) System.in.read(); //read a char from the keyboard 
     if (ch == answer) System.out.println("**Right**"); 

     } 

    } 
} 
+0

Sie könnten versuchen, eine do-while-Anweisung. – Bubletan

Antwort

0

Es ist nur die statments bestellen. Versuchen Sie, diese

public class Guess { 

    public static void main(String args[]) 
      throws java.io.IOException { 
     char ch, answer = 'K'; 

     System.out.println("I'm thinking of a letter between A and Z."); 
     System.out.print("Can you guess it:"); 
     ch = (char) System.in.read(); //read a char from the keyboard 

     while (ch != answer) { 


      ch = (char) System.in.read(); //read a char from the keyboard 
      if (ch == answer) { 
       System.out.println("**Right**"); 
       break; 
      }else{ 
       System.out.println("**WRONG**"); 
      } 
      System.out.println("I'm thinking of a letter between A and Z."); 
      System.out.print("Can you guess it:"); 

     } 

    } 

} 
+0

Danke für die Rückmeldung, habe gerade die von Ihnen vorgeschlagenen Änderungen gemacht und das funktioniert !! – TMC

+0

@TMC wählen Sie eine der Antworten als die richtige für die anderen finden Sie es. – Krismorte

+1

Wusste nicht, dass ich das tun könnte, jetzt getan, danke, dass Sie mich wissen lassen! – TMC

1

würde ich empfehlen Scanner verwenden und die Zeile lesen, wenn der Benutzer Treffer zurück, wie read hält als ein anderes Zeichen zurückgeben, z.B .:

char answer ='K'; 
Scanner scanner = new Scanner(System.in); 
System.out.println("I'm thinking of a letter between A and Z."); 
System.out.print("Can you guess it:"); 
String ch = scanner.nextLine(); //read a char from the keyboard 

while (ch.length() > 0 && ch.charAt(0) != answer) { 
    System.out.println("**WRONG**"); 
    System.out.println ("I'm thinking of a letter between A and Z."); 
    System.out.print("Can you guess it:"); 
    ch = scanner.nextLine();//read a char from the keyboard 
} 
System.out.println("**Right**"); 
scanner.close(); 
+0

Hallo, danke für die Rückmeldung, ich werde in die Scanner-Funktion schauen müssen, aber ich habe festgestellt, dass ich die gleichen Ergebnisse mit mehreren Zeilen bekommen habe, obwohl die andere Antwort darauf hinweist, dass meine Bestellung damit kombiniert ist es funktionierte ! – TMC