java - 如何接受用户输入的范围内的整数
问题描述
我正在制作一个 madlibs,我的一个问题是让用户输入一个介于 1 到 12 之间的整数,这样我就可以用它来计时。艾。我下午 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
方法返回 aboolean (true or false)
而不是数字。从控制台提示时,如果您正确构建代码,则实际上并不需要它们。我倾向于仅在从文件中读取时使用它们。
一般来说。
- 提示值。
- 读入值。
- 验证值是否正确。
- 如果正确,请继续执行该程序。
- 从 (1) 开始重复。
推荐阅读
- aws-api-gateway - 如何通过资源策略限制对无服务器 API 的访问?
- mysql - RDS MySQL 大小不断增加
- apache-flink - 如何在 FlinkSQL 的 SESSION 窗口中获取 LAST_VALUE?
- android - LiveData - 如何观察对象内部列表的变化?
- html - "mailto:" 没有设置完整的电子邮件地址
- java - Gradle war插件创建目录结构
- r - 如何使用 panel.labs 和 survminer::ggsurvplot_facet 删除 facet 参数?
- python - 在大型 numpy 数组上应用聚合函数
- python - Pandas 将同一活动的时间序列数据帧展平,但时间戳不同
- html - 在 Safari 上为图像设置背景颜色的动画是不稳定的