2016-11-11 6 views
-5

Ich versuche, eine einfache Java-Anwendung, die zwei Zahlen auf dem Bildschirm ausgibt, und der Benutzer muss die Summe dieser beiden Zahlen eingeben. Wenn ich die Summe eingebe, fragt mich das Programm ob ich fortfahren möchte. Wenn ich ja sage, gibt das Programm zwei neue Zahlen aus und wenn ich die richtige Antwort eingabe, erkennt das Programm nicht, dass die Antwort richtig ist.Programm erkennt keine Lösung

Wenn ich beim Start des Programms eine falsche Antwort eintrage, möchte ich, dass das Programm den Benutzer immer wieder nach einer Lösung fragt, bis er den richtigen Eintrag eingibt, aber ich weiß nicht, wie ich das machen soll. Hier ist mein Code:

import java.util.Scanner; 
import java.security.SecureRandom; 

public class HelloWorld { 
    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     int result = getRandomNumbers(); 

     int counter = 1; 
     char again; 

     while (counter == 1) { 

      int userResult = input.nextInt(); 
      if (result == userResult) { 
       System.out.println("You are right"); 
      } else { 
       System.out.println("You are wrong, try again"); 
      } 

      System.out.println("Do you want to try again? Enter y for yes or n for no"); 
      again = input.next().charAt(0); 

      if (again == 'y') getRandomNumbers(); 
      else counter++; 
     } 

    } 

    public static int getRandomNumbers() { 
     SecureRandom randomNumbers = new SecureRandom(); 

     int fnum = 1 + randomNumbers.nextInt(9); 
     int snum = 1 + randomNumbers.nextInt(9); 

     System.out.println("What is " + fnum + " times " + snum); 
     return fnum * snum; 
    } 

} 
+1

Formatieren Sie zuerst Ihren Code richtig, damit auch Menschen die Programmstruktur sehen können. Bis Sie das tun, werde ich persönlich nicht auf den Code schauen, aber Sie können mit anderen Glück haben. Oder nicht. – Andreas

Antwort

1

können Sie verwenden, um eine while Schleife den Benutzer auf eine neue Eingabe zu fragen, ob die Eingabe nicht das erwartete ist.

Try this:

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    while (true) { 
     int result = getRandomNumbers(); 
     int userResult = input.nextInt(); 
     while (result != userResult) { 
      System.out.println("You are wrong, try again"); 
      result = getRandomNumbers(); 
      userResult = input.nextInt(); 
     } 
     System.out.println("You are right"); 

     System.out.println("Do you want to try again? Enter y for yes or n for no"); 

     if (input.next().charAt(0) == 'n') { 
      break; 
     } 
    } 

Es bricht die while (true) Schleife nur dann, wenn der Benutzer sagt, dass er nicht fortsetzen will (n).