我正在制作madlib,我的问题之一是要求用户输入1到12之间的整数,因此我可以用它来打发时间。 ei。我下午6点离开家。
这是我完成的代码,但是没有用。 我不确定该如何处理。 如果用户输入的答案无效,则重复该问题,直到提交了有效的答案为止。
Scanner input = new Scanner(System.in);
int hourstime;
System.out.print("Give me another whole number between 1 and 12. ");
while (!input.hasNextInt()) {
System.out.println("That's not a number!");
input.next();
}
while (input.hasNextDouble()) {
System.out.println("I need a whole number. ");
input.next();
}
while (input.hasNextInt() >= 13 || input.hasNextInt() <= 0) {
System.out.println("I need a number between 1 and 12. ");
input.next();
}
hourTimes= input.nextInt();
System.out.println("Thanks. The time would be " + hours time + " P.M.");
答案 0 :(得分:1)
您需要将数字分配给变量,如我在此处所示。
Scanner input = new Scanner(System.in)
int value = 0;
while (true) {
System.out.print("Please enter a value between 1 and 12: ");
value = input.nextInt();
if (value >= 1 && value <= 12) {
break;
}
System.out.println("That is not within the range!");
}
// now do something with value.
您也可以将其用作其他提示的模型。
还要注意,hasNext
方法返回一个boolean (true or false)
而不是一个数字。从控制台提示时,如果正确构建代码,则实际上并不需要它们。我倾向于仅在从文件读取时使用它们。
一般。
答案 1 :(得分:0)
该代码将不起作用,因为hasNext...()
方法是布尔值-它们仅返回问题的答案是否流中是否有相应类型的任何对象在等待,而不是< strong>对象是什么。
但是,如果您将hasNext...()
与next...()
结合使用,则会遇到另一个问题-next...()
的每个应用程序移动光标。也就是说,Scanner
中没有实现“偷看”方法。
基本上,您可以做的最接近的是:
换句话说,就像:
if (input.hasNextInt()) {
int next = input.nextInt();
if (next >= 0 && next <= 12) {
...
}
}