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

Java面向对象开发计算器时加法方法未正常执行问题排查

Java计算器程序问题排查与修复

存在的问题

  • 构造函数赋值逻辑颠倒:构造方法中代码写为valueTyped = currentValue,实际是将currentValue的默认值0赋值给参数,你输入的初始值没有存入类的属性,导致后续计算的基数始终为0
  • 运算结果未处理:调用加法方法后只执行了计算逻辑,既没有更新计算器的当前值,也没有打印返回的运算结果,所以看不到计算效果
  • (优化建议)currentValue用static修饰不符合面向对象封装逻辑,多个计算器实例会共享该值,互相干扰,建议去掉static修饰

修复后的代码

CalculatorOOP.java

import java.util.Scanner;

public class CalculatorOOP {
    Scanner input = new Scanner(System.in);
    // 去掉static修饰,改为实例属性
    public double currentValue;
    public double valueInput;
    
    public CalculatorOOP(double valueTyped){
        // 修正赋值顺序,把传入的初始值赋值给类属性
        currentValue = valueTyped;
    }
    
    public double addToValue(){
        System.out.println("Type the value you want to add:");
        double valueToAdd = input.nextDouble();
        double valueAfterAddition = currentValue + valueToAdd;
        // 更新当前值,支持后续连续运算
        currentValue = valueAfterAddition;
        return valueAfterAddition;
    }
    
    public double substractToValue(){
        System.out.println("Type the value you want to substract:");
        double valueToSubstract = input.nextDouble();
        double valueAfterSubstraction = currentValue - valueToSubstract;
        currentValue = valueAfterSubstraction;
        return valueAfterSubstraction;
    }
    
    public double multiplyValue(){
        System.out.println("Type the factor value:");
        double factor = input.nextDouble();
        double valueAfterMultiplication = currentValue * factor;
        currentValue = valueAfterMultiplication;
        return valueAfterMultiplication;
    }
        
    public double divideValue(){
        System.out.println("Type the divisor value:");
        double divisor = input.nextDouble();
        double valueAfterDivision = currentValue / divisor;
        currentValue = valueAfterDivision;
        return valueAfterDivision;
    }
}

Main.java

import java.util.Scanner;

public class Main {
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("Type a value:");
        double valueInput = input.nextDouble();
        CalculatorOOP obj = new CalculatorOOP(valueInput);
        System.out.println("Enter the calculation option (1, 2, 3, or 4):");
        int optionEntered = input.nextInt();
        switch (optionEntered){
            case 1 : 
                double addRes = obj.addToValue();
                // 打印运算结果
                System.out.println("运算结果:" + addRes);
                break;
            // 可自行补充其他运算的case逻辑
            default:
                System.out.println("无效选项");
        }
    }
}

修复后运行效果

Type a value:
2
Enter the calculation option (1, 2, 3, or 4):
1
Type the value you want to add:
4
运算结果:6.0

Process finished with exit code 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:09