java - 如何验证在整数数据类型中输入的非整数?
问题描述
我必须建立一个有待购买物品的商店。选择商品后,我提示用户输入他们想要购买的商品的数量。
// 'input' is my Scanner object
int quantity;
quantity = input.nextInt();
如果用户输入一个非整数(即十进制,字符...),它会中断程序。有没有办法验证这个非整数输入?
谢谢
解决方案
当然,接受 String 值而不是 int,检查您是否可以将该 String 值解析为 int,如果可以,然后这样做。如果不是,则发送一条消息,说明输入的值必须是数字。
这可以在一个while循环中完成。
import java.util.Scanner;
public class ScannerInputInt {
public static void main(String... args) {
Scanner in = new Scanner(System.in);
Integer input = null;
do {
System.out.println("Please enter number: ");
String s = in.nextLine();
try {
input = Integer.parseInt(s);
} catch (NumberFormatException e) {
System.out.println("ERROR: " + s + " is not a number.");
}
} while (input == null);
}
}
推荐阅读
- reactjs - react-lottie,无法为动画数据传递道具
- javascript - 通过 DOM 操作读取颜色属性,我想读取 body 的 backgroundColor 的值。但结果是一个空字符串
- python - RuntimeError:cuda 运行时错误(3):/opt/conda/conda-bld/pytorch-nightly_1553749772122/work/aten/src/THC/THCGeneral.cpp:51 处的初始化错误
- reactjs - React.js Virgin:为什么我的硬编码数据与用户输入的数据不同?
- python-3.x - TypeError:Asia/Kolkata 类型的对象不是 JSON 可序列化的
- c# - C# System.Net.Http.StringContent() 在运行时给出异常
- python - 有没有办法更改嵌套函数的参数名称?
- react-native - 如何使用 react-navigation v5 获取 id 的参数?
- f# - 指定泛型返回类型的 F# 接口
- flutter - 在颤振中,如何在用户第一次访问该网站时创建一个 cookie,并检查该 cookie 是否存在于所有后续访问中?