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

Android Studio计算器C按钮异常:点击后字符变为C的问题求助

计算器C按钮功能异常修正方案

问题原因

你的代码逻辑存在分支执行冲突:点击C按钮时,虽然执行了删除最后一个字符的操作,但后续会触发=按钮对应的else分支,把"C"追加到dataToCalculate末尾,导致输入框最后一个字符变成C,而非删除效果。

修正后的代码

@Override
public void onClick(View view) {
    MaterialButton button = (MaterialButton) view;
    String buttonText = button.getText().toString();
    String dataToCalculate = equation.getText().toString();

    if(buttonText.equals("AC")){
        equation.setText("");
        result.setText("0");
        return;
    } else if(buttonText.equals("C")) {
        // 空输入时跳过删除操作,避免索引越界
        if(!dataToCalculate.isEmpty()){
            dataToCalculate = dataToCalculate.substring(0, dataToCalculate.length() - 1);
        }
        equation.setText(dataToCalculate);
        // 更新结果显示
        String finalResult = getReasult(dataToCalculate);
        if(!finalResult.equals("ERROR")){
            result.setText(finalResult);
        }
        return;
    } else if(buttonText.equals("=")){
        equation.setText(result.getText());
        return;
    } else {
        dataToCalculate = dataToCalculate + buttonText;
        equation.setText(dataToCalculate);
        String finalResult = getReasult(dataToCalculate);
        if(!finalResult.equals("ERROR")){
            result.setText(finalResult);
        }
    }
}

关键修改点

  1. 把独立if改为else if链式结构,确保每个按钮的逻辑互斥,不会触发多余的追加操作
  2. 给C按钮逻辑添加return,处理完删除后直接结束方法,避免后续代码执行
  3. 增加空输入判断,防止调用substring时出现索引越界异常
  4. 调整结果计算的位置,确保每种操作后结果都能同步更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:50:22