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

Android Studio开发简易计算器遇两类报错:方法重复与常量表达式要求

解决方案

1. 解决重复方法定义错误

直接删除第一个空实现的onButtonClick(View)方法即可,它没有任何业务逻辑,属于冗余代码,这是导致第一个报错的直接原因。

2. 解决“需要常量表达式”错误

这个报错是因为重复方法导致编译中断引发的连锁问题,删除重复方法后,配合你已添加的@SuppressLint("NonConstantResourceId")注解,该错误会自动消失。

3. 修正潜在运行时错误

注意到方法名拼写错误:updateDsiplay应改为updateDisplay,否则运行时会因找不到方法崩溃。


修正后的代码片段

private void calculateResult() {
    String displayContent = display.getText().toString();
    if (!displayContent.isEmpty()) {
        try {
            double displayedValue = Double.parseDouble(displayContent);
            switch (lastOperation) {
                case "+":
                    currentValue += displayedValue;
                    break;
                case "-":
                    currentValue -= displayedValue;
                    break;
                case "*":
                    currentValue *= displayedValue;
                    break;
                case "/":
                    if (displayedValue != 0) {
                        currentValue /= displayedValue;
                    } else {
                        Toast.makeText(this, "Cannot divide by zero",
                                Toast.LENGTH_SHORT).show();
                        return;
                    }
                    break;
                case "=":
                    currentValue = displayedValue;
                    break;
            }
        } catch (NumberFormatException e) {
            Toast.makeText(this, "Invalid input", Toast.LENGTH_SHORT).show();
        }
    }
    updateDisplay(currentValue);
}

@SuppressLint("DefaultLocale")
private void updateDisplay(double value){
    DecimalFormat format= new DecimalFormat("0.############");
    display.setText(format.format(value));
}

@SuppressLint("NonConstantResourceId")
public void onButtonClick(View view){
    if(clearDisplay){
        display.setText("");
        clearDisplay = false;
    }
    switch (view.getId()){
        case R.id.button_equal:
            calculateResult();
            lastOperation="=";
            clearDisplay=true;
            break;
        case R.id.button_plus:
        case R.id.button_minus:
        case R.id.button_multiply:
        case R.id.button_divide:
            performOperation(((Button) view).getText().toString());
            break;
        case R.id.button_clear:
            display.setText("");
            currentValue = 0;
            lastOperation = "=";
            clearDisplay = false;
            break;
        default:
            if (clearDisplay){
                display.setText("");
                currentValue=0;
                clearDisplay=false;
            }
            String buttonText = ((Button) view).getText().toString();
            display.append(buttonText);
            break;
    }
}

private void performOperation(String operation){
    if(!display.getText().toString().isEmpty()){
        calculateResult();
    }
    lastOperation=operation;
    clearDisplay = true;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:43:11