java - 我将如何做到这一点,以便每当输入一个非整数值时,它会告诉用户输入一个整数值?Java - NetBeans
问题描述
我正在制作一个非常简单的程序,要求用户输入年龄,然后它会计算入场费。到目前为止一切正常,但我想添加一个签入,以便如果用户输入除 int 值以外的任何内容,它会要求他们输入一个 int 值。即,如果他们输入一个字符。
这是我的代码:
public class CalcChargeAge {
public static void main(String[] args) {
int x;
double chargeA = 20;
double chargeB = 10;
System.out.println("Enter Users age to calculate charge for entry. ");
Scanner in = new Scanner(System.in);
x = in.nextInt();
if (x >= 18) {
System.out.println("Users age is " + x);
System.out.println("Please pay the charge for entry: £" + chargeA);
} else if (x >= 12) {
System.out.println("Users age is " + x);
System.out.println("Please pay the charge for entry: £" + chargeB);
} else {
System.out.println("Users age is " + x);
System.out.println("User entry charge is free. Print admission ticket.");
}
}
}
解决方案
您可以使用该Scanner.hasNextInt()
方法检查输入是否为整数,我认为这比捕获异常要好得多。
然后对于完整的实现,您可以将所有内容包装在一个循环中,因此您可以执行以下操作:
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
if(in.hasNextInt()) {
int x = in.nextInt();
// Handle input
break;
}
else {
// Handle invalid input
in.next();
}
}
推荐阅读
- swift - 在 tableview 中对动态部分进行排序 | 迅速
- python - 当我开始循环时,循环得到 0,0,1,2,3.. 而不是 0,1,2,3
- html - Bootstrap 使所有列等于最大 col-auto 宽度
- react-native - 更新 graphql 列中的 JSON 数据
- emotion - 如何合并样式标签
- javascript - 节点csv解析返回值在调用时返回为未定义
- graphql - GraphQL 格式返回对象
- swiftui - replaceOccurrences() 用于通过正则表达式将文本拆分为多行
- javascript - 为什么我的承诺链仍然同时执行?
- pine-script - 松脚本 - 有没有办法获得当天的收盘价,以将其用于过去的收盘系列计算[]?