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

Android计算器App开发中x²按钮异常崩溃问题求助

计算器x²按钮崩溃问题修复

你的App崩溃的核心原因是:当输入内容是1+这类包含非数字字符的字符串时,Double.parseDouble()会抛出NumberFormatException,而原代码只处理了空输入的情况,没有捕获这个异常,导致App崩溃。

以下是修复后的代码,整合了异常捕获和输入验证逻辑:

bsquare.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String input = tvMain.getText().toString().trim();
        
        // 处理空输入
        if (input.isEmpty()) {
            Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
            return;
        }
        
        // 用正则提前验证输入是否为有效数字,拦截异常场景
        String validNumberPattern = "^-?\\d+(\\.\\d+)?$";
        if (!input.matches(validNumberPattern)) {
            Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
            return;
        }
        
        // 执行平方计算
        try {
            double d = Double.parseDouble(input);
            double square = d * d;
            tvMain.setText(String.valueOf(square));
            tvsec.setText(d + "²");
        } catch (NumberFormatException e) {
            // 兜底异常处理,避免极端情况崩溃
            Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
        }
    }
});

关键修复点:

  • 新增正则表达式验证,提前过滤1+这类不符合数字格式的输入,从根源避免异常抛出
  • 将数字解析逻辑包裹在try-catch块中,即使出现未预料到的格式问题,也能捕获异常并提示用户,防止App崩溃
  • 保留空输入的快速判断,提升用户反馈效率

如果不想用正则,也可以简化成只依赖try-catch的版本:

bsquare.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String input = tvMain.getText().toString().trim();
        
        try {
            double d = Double.parseDouble(input);
            double square = d * d;
            tvMain.setText(String.valueOf(square));
            tvsec.setText(d + "²");
        } catch (NumberFormatException e) {
            Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
        }
    }
});

这个版本会自动处理空输入(空字符串解析时也会抛NumberFormatException)和带运算符的输入,同样能防止崩溃。

内容的提问来源于stack exchange,提问作者Abhijit Zende

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:29:54