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

Java不使用parseInt转换字符串数字时如何检测含字母输入并报错

你的问题出在正则匹配逻辑写反了。当前代码的判断规则是「只要输入不是纯字母就算合法」,所以字母+数字的混合内容会被判定为合法输入,自然不会触发报错。

修复思路

  1. 把正则规则改成匹配纯数字,只要输入包含任意非数字字符就判定为非法
  2. 调整判断逻辑,先校验非法场景触发报错,合法场景再做数值转换和计算
  3. 把计算用的临时变量挪到循环内部,避免多次输入时数值累积出错

修复后代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:01