验证java中的用户输入?

时间:2016-12-07 16:05:30

标签: java

我的猜谜游戏需要用户进行5次,10次或20次猜测,他们应该尝试猜测计算机选择的随机数。我的代码中的所有内容都在工作,除了这个:当代码询问用户是否需要5,10或20个猜测时,如果用户输入15,例如,这不是其中一个选项,则会继续并启动询问他们的猜测。我需要某种类型的验证,以确保它们输入其中一个选项。我不确定在哪里或如何以正确的方式包含它,因为我是编程新手。我尝试了几种不同的方法,但却为所有人带来了错误。我需要的是如果用户输入的数字不是其中一个选项,它应该再次询问它们,直到他们输入其中一个选项。有人能告诉我应该怎么做吗?

6 个答案:

答案 0 :(得分:2)

首先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();
}

答案 1 :(得分:0)

Java有continue关键字,可以在运行时跳转到当前循环的开头。请参阅The Continue Statement文档。

获得用户输入后,您可以执行类似

的操作
if (numberOfGuesses != 5 && numberOfGuesses != 10 && numberOfGuesses != 20) {
  continue; // jumps to start of while loop block, without running conditional
}

答案 2 :(得分:0)

从循环内的用户那里获取输入。例如:

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

除非用户输入三个值中的一个,否则系统会提示他/她输入正确的猜测值。

答案 3 :(得分:0)

当您收到“numberOfGuesses”时,您应该先检查该号码的值,然后再继续。否则,您只需继续执行代码,因为您实际上并未验证该数字。

创建一个返回布尔值的函数然后你可以检查那里的数字可能是一个好主意。

boolean isValidOption(int number)

在您要执行某些比较和验证的功能中。由于您有三个选项,您可以选择

之类的内容

if (number == 5 || ... )

您可以考虑如何验证价值,因为有很多方法。只需与您知道的有效数字进行比较,就可以执行一些if语句,或者将数字放在数组中并在迭代数组时比较值,依此类推。希望能帮助您入门并快乐编码!

编辑:最后我应该提到,但您需要考虑代码的流程。应该使用像while(!isValidOption())这样的一些循环来进行检查。循环指令,直到用户输入有效选项。您需要在代码中考虑操作顺序,并了解计算机没有为您考虑。它完成了你所说的,所以要明白你在这里告诉它的内容。例如I want to step into my game, if and only if, the condition of isValidOption is met

答案 4 :(得分:0)

您需要做的是保持循环直到您获得满足您需求的输入,例如您可以使用以下功能

    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 :(得分:0)

您可以在循环中编写代码以确保值为5,10或20

while(numberOfGuesses!=5||numberOfGuesses!=10||numberOfGuesses=!20);

并且条件if(answer.length()==3可能会导致错误。这意味着每次输入长度为3时都会起作用,甚至是“noo”