2016-11-11 157 views
-5

我正試圖讓簡單的Java應用程序在屏幕上輸出兩個數字,用戶必須輸入這兩個數字的總和。當我輸入總和時,如果它是正確的,程序會問我是否要繼續。如果我回答是,程序輸出兩個新號碼,當我輸入正確答案時,程序不會識別出答案是正確的。程序無法識別解決方案

如果我在程序開始時輸入了錯誤的答案,我希望程序一遍又一遍地詢問用戶,直到他輸入正確的一個,但我不知道該怎麼做。這裏是我的代碼:

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

它打破了while (true)循環,只有當用戶說,他不希望繼續(n)。

相關問題