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); } } }
关键修改点
- 把独立
if改为else if链式结构,确保每个按钮的逻辑互斥,不会触发多余的追加操作 - 给C按钮逻辑添加
return,处理完删除后直接结束方法,避免后续代码执行 - 增加空输入判断,防止调用
substring时出现索引越界异常 - 调整结果计算的位置,确保每种操作后结果都能同步更新
内容的提问来源于stack exchange,提问作者Soham Barma
相关产品推荐
相关产品推荐

