You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两行代码差异可消除NumberFormatException运行时错误?

问题解答:为何两行代码解析数字时表现不同?

嘿,这个问题的答案其实就藏在你的报错信息里!咱们一步步拆解来看:

报错的核心原因

你看报错提示里明确写着:NumberFormatException: For input string: "32363 " —— 注意这个字符串末尾带了个空格!

Integer.parseInt()方法对输入字符串的要求很严格:必须是纯数字组成的字符串,不能包含任何空白字符(空格、制表符、换行符都算)。当你直接用br.readLine()读取输入时,得到的字符串里带着多余的空白,parseInt没法识别这种“带尾巴”的数字,自然就抛出了格式异常。

修复代码的关键作用

而br.readLine().replaceAll("\\s+","")这行代码做了最关键的一步处理:

  • replaceAll("\\s+", "")会把字符串中所有的空白字符(不管是开头、结尾还是中间的一个或多个空白)全部替换成空字符串。
  • 比如原本的输入是"32363 ",经过替换后就变成了干净的纯数字字符串"32363",这下Integer.parseInt()就能正常解析了。

补充小技巧

如果只是首尾有空白,用trim()方法也能解决问题(比如br.readLine().trim()),但replaceAll("\\s+","")的适用范围更广——如果输入字符串中间夹杂着空白(比如"32 363"),它也能把所有空白都去掉,转换成连续的数字字符串,而trim()只能处理首尾的空白。

内容的提问来源于stack exchange,提问作者Aman Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:22:33