簡體   English   中英

使用布爾值從用戶字符串 java 輸入驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM