如何接受范围内的整数的用户输入
How to accept user input of a whole number within a range
我正在制作一个 madlibs,我的一个问题是让用户输入一个 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.");
您需要将数字分配给一个变量,就像我在此处显示的那样。
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
方法 return 是 boolean (true or false)
而不是数字。当您从控制台提示时,如果您正确地构建代码,您并不真正需要它们。我倾向于只在读取文件时使用它们。
一般。
- 提示输入值。
- 读入值。
- 验证值是否正确。
- 如果正确,请继续执行程序。
- 从 (1) 开始重复。
该代码将不起作用,因为 hasNext...()
方法是布尔值 - 它们仅 return 回答问题 是否各自的类型在流中等待,而不是 what 对象是什么。
但是,如果您将 hasNext...()
与 next...()
结合使用,您将 运行 陷入另一个问题 - 即 next...()
的每个应用移动光标。即Scanner
中没有实现"peek"方法。
基本上,您可以做的最接近的是:
- 检查是否有号码
- 读那个数字
- 检查号码是否通过了适当的测试
换句话说,类似于:
if (input.hasNextInt()) {
int next = input.nextInt();
if (next >= 0 && next <= 12) {
...
}
}
我正在制作一个 madlibs,我的一个问题是让用户输入一个 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.");
您需要将数字分配给一个变量,就像我在此处显示的那样。
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
方法 return 是 boolean (true or false)
而不是数字。当您从控制台提示时,如果您正确地构建代码,您并不真正需要它们。我倾向于只在读取文件时使用它们。
一般。
- 提示输入值。
- 读入值。
- 验证值是否正确。
- 如果正确,请继续执行程序。
- 从 (1) 开始重复。
该代码将不起作用,因为 hasNext...()
方法是布尔值 - 它们仅 return 回答问题 是否各自的类型在流中等待,而不是 what 对象是什么。
但是,如果您将 hasNext...()
与 next...()
结合使用,您将 运行 陷入另一个问题 - 即 next...()
的每个应用移动光标。即Scanner
中没有实现"peek"方法。
基本上,您可以做的最接近的是:
- 检查是否有号码
- 读那个数字
- 检查号码是否通过了适当的测试
换句话说,类似于:
if (input.hasNextInt()) {
int next = input.nextInt();
if (next >= 0 && next <= 12) {
...
}
}