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

Android计算器:EditText输入负数时终止加法运算的实现疑问

解决负数输入时终止加法操作的问题

你的代码核心问题是在检测到负数时,没有直接终止整个点击事件的执行流程,同时存在多余的类型转换操作。以下是修改后的实现:

b1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String first = et1.getText().toString();
        // 处理输入为空的情况
        if (first.isEmpty()) {
            Toast.makeText(MainActivity.this, "请输入数字", Toast.LENGTH_SHORT).show();
            return; // 终止后续操作
        }

        int val;
        try {
            val = Integer.parseInt(first);
        } catch (NumberFormatException e) {
            Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
            et1.setText("");
            return;
        }

        // 检测负数或0,直接终止操作
        if (val <= 0) {
            Toast.makeText(MainActivity.this, "数值不能为负数或0", Toast.LENGTH_SHORT).show();
            return; // 关键:终止方法,不再执行加法逻辑
        }

        // 处理TextView初始值为空的情况,默认设为0
        int we;
        String currentResult = t1.getText().toString();
        if (currentResult.isEmpty()) {
            we = 0;
        } else {
            try {
                we = Integer.parseInt(currentResult);
            } catch (NumberFormatException e) {
                we = 0;
                t1.setText("0");
            }
        }

        // 执行加法操作
        int ans = val + we;
        t1.setText(String.valueOf(ans));
        Toast.makeText(MainActivity.this, "已将" + val + "加到当前值中", Toast.LENGTH_SHORT).show();
        et1.setText(""); // 清空输入框,方便下次输入
    }
});

关键修改点:

  • 当检测到输入值val <= 0时,弹出提示后调用return直接终止onClick方法,确保后续加法逻辑完全不执行
  • 增加了数字解析的异常捕获,避免非数字输入导致崩溃
  • 处理了TextView初始为空的情况,默认赋值为0,防止解析报错
  • 移除了多余的Integer.parseInt(String.valueOf(val))重复转换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:45:17