[英]Input validation from user strings java using a boolean
我正在創建一個石頭剪刀布游戲,我唯一掛起的部分是輸入驗證。 我嘗試過 do/while 循環、try/catch 但似乎無法讓它正常運行。 下面是我目前擁有的 getUserChoice 方法。 任何幫助將不勝感激。 謝謝!
public String getUserChoice(){
String user = " ";
boolean error = false;
Scanner in = new Scanner(System.in);
System.out.println("Please enter rock, paper, or scissors: ");
user = in.nextLine(); //reads user input
do {
if (user.equalsIgnoreCase("rock")) {
user = "rock";
error = false;
}
else if (user.equalsIgnoreCase("paper")) {
user = "paper";
error = false;
}
else if (user.equalsIgnoreCase("scissors")) {
user = "scissors";
error = false;
}
}
while(error); {
System.out.println("Please enter valid input: ");
}
return user;
}
我猜你只想輸入 "rock" , "paper" 和 "scissors"
只做
if(!input.equals("rock") || !input.equals("paper") ||
!input.equals("scissors")) System.out.println("invalid input");
或者if(!input.matches("rock|paper|scissors")) System.out.println("invalid input");
您可以將代碼稍微更改為:
public String getUserChoice(){
String user = " ";
boolean error = true;
Scanner in = new Scanner(System.in);
System.out.println("Please enter rock, paper, or scissors: ");
user = in.nextLine(); //reads user input
do {
if (user.equalsIgnoreCase("rock")) {
user = "rock";
error = false;
}
else if (user.equalsIgnoreCase("paper")) {
user = "paper";
error = false;
}
else if (user.equalsIgnoreCase("scissors")) {
user = "scissors";
error = false;
} else {
System.out.println("Please enter valid input: ");
user = in.nextLine();
}
}
while(error);
return user;
}
boolean error = true;
使 while 塊無限迭代,否則,它會在第一次迭代時跳出。
else
塊是在輸入不好的條件時執行的塊。 while 之外的 system.out 在循環結束后才被執行
實現這一點的更有效或可讀的方法是將 do-while 塊替換為:
while (true){
if (user.equalsIgnoreCase("rock") || user.equalsIgnoreCase("paper") || user.equalsIgnoreCase("scissors")){
return user;
} else {
System.out.println("Please enter valid input: ");
user = in.nextLine();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.