Java不使用parseInt转换字符串数字时如何检测含字母输入并报错
你的问题出在正则匹配逻辑写反了。当前代码的判断规则是「只要输入不是纯字母就算合法」,所以字母+数字的混合内容会被判定为合法输入,自然不会触发报错。
修复思路
- 把正则规则改成匹配纯数字,只要输入包含任意非数字字符就判定为非法
- 调整判断逻辑,先校验非法场景触发报错,合法场景再做数值转换和计算
- 把计算用的临时变量挪到循环内部,避免多次输入时数值累积出错
修复后代码
import java.util.regex.Pattern; import java.util.Scanner; public class Exercise8 { private static Scanner input; public static void main(String[] args) { System.out.println("Enter some numbers"); input = new Scanner(System.in); double divide = 10; while (true) { String strNumbers = input.next(); // 校验是否为纯数字 if (!Pattern.matches("^[0-9]+$", strNumbers)) { System.out.println("Invalid"); continue; } // 合法输入走转换逻辑 int sum = 0; int j = 0; for (int i = strNumbers.length() - 1; i >= 0; i--) { sum += Math.pow(10, j) * (strNumbers.charAt(i) - '0'); j++; } System.out.println("Your numbers: " + sum); System.out.println("Your numbers divided by 10: " + sum/divide); break; // 输入合法直接结束循环 } } }
逻辑验证
现在输入三种场景都会正确处理:
- 纯数字:正常转换计算输出结果
- 纯字母:触发Invalid提示
- 字母数字混合:触发Invalid提示
内容的提问来源于stack exchange,提问作者Dragneel
相关产品推荐
相关产品推荐

