Integer.parseInt() 是 Java 中将字符串转为 int 的常用方法,但仅支持纯数字字符串(可带正负号),需 trim 空格、校验格式或用 try-catch 捕获 NumberFormatException,并注意 int 范围限制。

在 Java 中,Integer.parseInt() 是将字符串转为 int 类型最常用的方法,但它对输入格式很敏感——只能处理纯数字字符串(可带正负号),否则会抛出 NumberFormatException。直接用它解析用户输入前,必须做校验和容错处理。
确认字符串是否符合整数格式
用户可能输入空格、字母、小数点、中文数字或空字符串,这些都会导致解析失败。建议先用 String.trim() 去首尾空格,再检查是否为空或只含有效字符:
- 调用
str = str.trim()清除前后空格 - 用
str.isEmpty()排除空输入 - 可用正则
str.matches("-?\d+")粗略判断是否为合法整数格式(注意:不能识别带千分位逗号或全角符号)
用 try-catch 安全捕获转换异常
实际开发中,不推荐先校验再解析(存在竞态风险),更可靠的做法是直接尝试解析,并用 try-catch 捕获异常:
- 把
Integer.parseInt(input)放在try块中 - 在
catch (NumberFormatException e)中提示用户“请输入有效的整数” - 避免程序崩溃,也避免返回默认值(如 0)造成逻辑误判
注意数值范围与溢出问题
Integer.parseInt() 要求字符串表示的数字在 int 范围内(-2147483648 到 2147483647)。超出范围也会抛出 NumberFormatException:
立即学习“Java免费学习笔记(深入)”;
- 例如
"2147483648"或"-2147483649"都会失败 - 若需支持更大整数,改用
Long.parseLong()或BigInteger - 无需手动检查长度——解析过程本身已包含范围校验
替代方案:使用 Scanner 或 Integer.valueOf() 的区别
Scanner.nextInt() 可自动跳过空白并读取整数,但遇到非法输入会卡住(需调用 nextLine() 清缓存);而 Integer.valueOf(str) 返回 Integer 对象,内部仍调用 parseInt,且有缓存优化(-128 到 127 范围内复用对象),日常使用二者效果基本一致。若只需基本类型,parseInt 更直观。


















