我的猜測遊戲會從用戶那裏獲得5,10或20個猜測,他們應該嘗試猜測計算機選擇的隨機數。我的代碼中的所有內容都在工作,除此之外:當代碼詢問用戶是否需要5,10或20個猜測時,例如,如果用戶輸入15,而不是其中一個選項,則它會繼續並開始要求他們猜測。我需要一些類型的驗證來確保他們進入其中一個選項。因爲我是編程新手,所以我不確定在正確的方式下如何包含這些內容。我已經嘗試了幾種不同的方法,但是都會遇到錯誤。我需要的是,如果用戶輸入的數字不是選項中的一個,那麼應該再次詢問他們,直到他們輸入其中一個選項。有人能告訴我我應該怎麼做?在java中驗證用戶輸入?
回答
從一個循環內的用戶採取投入。例如:
System.out.print("How many guesses would you like? (5, 10, 20)");
do {
int numberOfGuesses = scan.nextInt();
//on correct guess, break out of the loop
if(numberOfGuesses == 5 || numberOfGuesses == 10 || numberOfGuesses == 20)
break;
System.out.print("Please enter a guess having one of these values (5, 10, 20)");
} while (true);
除非用戶輸入三個值之一,否則他/她會不斷提示輸入正確的猜測值。
首先if (answer.length() ==3)
是沒有意義的。 也許你的意思是:
if(answer.equals("yes"))
此外,來完成你想我會用一個Set
包含有效的猜測數字是什麼。它是可擴展的,比檢查if
子句中的多個值更有意義。它看起來是這樣的:
Set<Integer> validNumberOfGuesses = new HashSet<Integer>(Arrays.asList(5, 10, 20));
int numberOfGuesses = scan.nextInt();
while (!validNumberOfGuesses.contains(numberOfGuesses)) {
/* ask again */
System.out.println(numberOfGuesses + " is not a valid number of guesses, please try again");
numberOfGuesses = scan.nextInt();
}
Java有continue
關鍵字跳轉至啓動電流回路的運行時。請參閱The Continue Statement文檔。
一旦你有你的用戶輸入,你可以這樣做
if (numberOfGuesses != 5 && numberOfGuesses != 10 && numberOfGuesses != 20) {
continue; // jumps to start of while loop block, without running conditional
}
當您收到「numberOfGuesses」時,您應該在繼續之前檢查該號碼的值。否則,你只需在代碼中繼續前進,因爲實際上並未驗證該數字。
創建一個返回布爾值的函數可能是一個好主意,然後你可以檢查那裏的數字。
boolean isValidOption(int number)
在函數要執行一些比較和驗證。既然你有三個選擇,你可以選擇像
if (number == 5 || ...)
你可以考慮你將如何驗證值的方法有很多。只需比較您所知道的有效數字,就可以執行一些if
語句,或者將數字放入數組中,並在遍歷數組的同時比較該值,依此類推。希望能幫助你開始並快樂編碼!
編輯:最後我應該提到,但你需要考慮你的代碼流。應該使用像while(!isValidOption())
這樣的somesort循環。循環指示,直到用戶輸入有效的選項。您需要考慮代碼中的操作順序,並理解計算機不會爲您考慮。它做你所說的,所以明白你在這裏試圖告訴它。例如,I want to step into my game, if and only if, the condition of isValidOption is met
。
你需要做的是留在循環,直到你輸入滿足您的需求,例如,你可以使用下面的函數
private int getNumberOfGuesses(Scanner scan) {
int numberOfGuesses;
boolean numberOfGuesesIsValid;
do {
System.out.println("How many guesses would you like? (5, 10, 20)");
numberOfGuesses = scan.nextInt();
numberOfGuesesIsValid = numberOfGuesses == 5 || numberOfGuesses == 10 || numberOfGuesses == 20;
if (!numberOfGuesesIsValid) {
System.out.print("Wrong option !!!");
}
} while (!numberOfGuesesIsValid);
return numberOfGuesses;
}
你可以寫一個循環內的代碼,以確保值可以是5,10或20
while(numberOfGuesses!=5||numberOfGuesses!=10||numberOfGuesses=!20);
和條件if(answer.length()==3
可能會導致錯誤。這意味着它將在每次輸入長度爲3時工作,即使是「noo」也是如此。
- 1. 在java中驗證用戶輸入
- 2. 在Java(Scanner)中驗證用戶輸入?
- 3. 在用戶輸入驗證 - Grails驗證
- 4. Java SWT用戶輸入驗證
- 5. 驗證用戶輸入的短語Java
- 6. java輸入驗證:如何在空間拆分用戶輸入?
- 7. 在Rails中驗證用戶輸入
- 8. 在GWT中驗證用戶輸入?
- 9. 輸入驗證Java
- 10. 使用Java驗證輸入
- 11. 輸入驗證在Java
- 12. Javascript驗證用戶輸入
- 13. Javascript用戶輸入驗證
- 14. 驗證用戶輸入Monotouch
- 15. 驗證用戶輸入
- 16. 驗證用戶輸入C#
- 17. 驗證用戶輸入?
- 18. 驗證用戶輸入
- 19. Fortran77用戶輸入驗證
- 20. 驗證用戶輸入
- 21. 用戶輸入值驗證
- 22. 驗證用戶輸入
- 23. 驗證用戶輸入或
- 24. scanf驗證用戶輸入
- 25. 輸入和用戶輸入驗證
- 26. Android驗證輸入,而用戶輸入
- 27. JAVA - 如何設置用戶輸入的輸入範圍驗證
- 28. 在Java中的正則表達式:驗證用戶輸入
- 29. 在Java中輸入驗證字符串
- 30. 在java中驗證雙輸入
要改善此問題,您應該顯示您嘗試的一種或兩種方式以及獲得的錯誤。這可能不會有人會給你一個代碼,因爲這不是本網站的目的。 – Lexi
你嘗試了什麼,以及你這樣做了哪些錯誤? – RamPrakash