2016-11-11 14 views
-5

私は画面に2つの数字を出力する単純なJavaアプリケーションを作成しようとしています。ユーザはそれらの2つの数字の合計を入力する必要があります。私が合計を入力すると、それが正しい場合、私は続行したいかどうかを私に尋ねます。私が「はい」と答えた場合、プログラムは2つの新しい番号を入れ、正解を入力すると、プログラムはその答えが正しいことを認識しません。プログラムが解決策を認識しない

私がプログラムの最初に間違った答えを入力した場合、プログラムがユーザーに正しい解決法を入力するまで何度も何度も解決策を尋ねるようにしたいと思いますが、その方法はわかりません。ここに私のコードは次のとおりです。

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

まず、コードを正しくフォーマットしてください。人間もプログラム構造を見ることができます。あなたがするまで、私は個人的にコードを見ませんが、あなたは他人と運が良いかもしれません。か否か。 – Andreas

答えて

1

あなたが入力が期待されるものではない場合は、新規ユーザーに入力を求めるためにwhileループを使用することができます。

はこれを試してみてください:

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; 
     } 
    } 

これは、ユーザーが彼が(n)を継続したくないと言っている場合にのみ、while (true)ループを破ります。

関連する問題