【问题标题】:How To Keep and Add Another Variable In Java?如何在 Java 中保留和添加另一个变量?
【发布时间】:2016-07-15 08:40:43
【问题描述】:

编程新手,所以请放轻松。

我正在开发一个用于课堂的计算器应用程序。我必须设置加法、减法、乘法和除法方法。

package part1.code;

import part1.user_interface.CalculatorUI;

public class Calculator {

private static final int BASE = 10;
private int _value;
private int _va;
private CalculatorUI _ui;

public Calculator(CalculatorUI calculatorUI) {
    _ui = calculatorUI;
    _value = 0;

}

public void digit_0_keyPressed() {
    _value = _value * BASE + 0;
    _ui.updateDisplay();
}
public void digit_1_keyPressed() {
    _value = _value * BASE + 1;
    _ui.updateDisplay();
}
public void digit_2_keyPressed() {
    _value = _value * BASE + 2;
    _ui.updateDisplay();
}
public void digit_3_keyPressed() {
    _value = _value * BASE + 3;
    _ui.updateDisplay();
}
public void digit_4_keyPressed() {
    _value = _value * BASE + 4;
    _ui.updateDisplay();
}
public void digit_5_keyPressed() {
    _value = _value * BASE + 5;
    _ui.updateDisplay();
}
public void digit_6_keyPressed() {
    _value = _value * BASE + 6;
    _ui.updateDisplay();
}
public void digit_7_keyPressed() {
    _value = _value * BASE + 7;
    _ui.updateDisplay();
}
public void digit_8_keyPressed() {
    _value = _value * BASE + 8;
    _ui.updateDisplay();
}
public void digit_9_keyPressed() {
    _value = _value * BASE + 9;
    _ui.updateDisplay();
}
public void clear_keyPressed() {
    _value = 0;
    _ui.updateDisplay();
}
public int getValue() {
    return _value;
}

public void equal_keyPressed() {
    _value = _value;
    _ui.updateDisplay();

    // TODO Define this method
}

public void add_keyPressed() {
    _value = 



    _ui.updateDisplay();

    // TODO Define this method

  }
}

现在,例如,您要做的基本事情是 1+1。对于 add_keyPressed,我试图达到 1+1 = 2,而不是 1+1 = 11。所以,我试图保持值输入,并同时添加新值。这听起来像我'm 参数传递(我可能是错的),或建模,但我不太确定。如果没有静态(这在我的课堂上是绝对禁止的),我不知道如何做到这一点,这来自我米看别人做的,是标准。 此外,在所有这些中,方法签名 -

公共 int 执行(int arg)

必须包括在内。

提前致谢。

【问题讨论】:

  • 您的问题是什么?你想要什么?你被什么困住了吗?
  • 您需要将第一个数字存储在 _value 中,然后是运算符,然后将第二个值存储在 _va 中?你被这个困住了吗?
  • 抱歉忘记了,_va 是试图实例化另一个变量,我将删除它。我基本上希望 add_keyPressed 在我添加另一个值时如何设置另一个值,例如 1 + 1(在我添加另一个 1 时保持 1)= 2,而不是 1+1 = 11。

标签: java parameter-passing modeling


【解决方案1】:

这里是更改列表
1.为操作员添加一个枚举
2.在类中添加运算符变量
3. 更改构造函数以设置运算符变量的默认值
4.更新等于按键方法
5. 更新添加按键方法

public class Calculator {

    private static final int BASE = 10;
    private int _value;
    private int _va;
    private CalculatorUI _ui;
    private Operator op;

    private enum Operator {
        ADD, SUB, MUL, DIV, NO_OPERATION
    };

    public Calculator(CalculatorUI calculatorUI) {
        op = Operator.NO_OPERATION;
        _ui = calculatorUI;
        _value = 0;
    }

    public void digit_0_keyPressed() {
        _value = _value * BASE + 0;
        _ui.updateDisplay();
    }

    public void digit_1_keyPressed() {
        _value = _value * BASE + 1;
        _ui.updateDisplay();
    }

    public void digit_2_keyPressed() {
        _value = _value * BASE + 2;
        _ui.updateDisplay();
    }

    public void digit_3_keyPressed() {
        _value = _value * BASE + 3;
        _ui.updateDisplay();
    }

    public void digit_4_keyPressed() {
        _value = _value * BASE + 4;
        _ui.updateDisplay();
    }

    public void digit_5_keyPressed() {
        _value = _value * BASE + 5;
        _ui.updateDisplay();
    }

    public void digit_6_keyPressed() {
        _value = _value * BASE + 6;
        _ui.updateDisplay();
    }

    public void digit_7_keyPressed() {
        _value = _value * BASE + 7;
        _ui.updateDisplay();
    }

    public void digit_8_keyPressed() {
        _value = _value * BASE + 8;
        _ui.updateDisplay();
    }

    public void digit_9_keyPressed() {
        _value = _value * BASE + 9;
        _ui.updateDisplay();
    }

    public void clear_keyPressed() {
        _value = 0;
        _ui.updateDisplay();
    }

    public int getValue() {
        return _value;
    }

    public void equal_keyPressed(String uimessage) {
        if (Operator.ADD.equals(op)) {
            _value += _va;
        } else if (Operator.MUL.equals(op)) {
            _value *= _va;
        } else if (Operator.DIV.equals(op)) {
            _value = _va / _value;
        } else if (Operator.SUB.equals(op)) {
            _value = _va - _value;
        }
        _va = 0;
        op = Operator.NO_OPERATION;
        _ui.updateDisplay();
    }

    public void add_keyPressed() {
        if (!Operator.NO_OPERATION.equals(op)) {
            equal_keyPressed();
        } else {
        _ui.updateDisplay();
        }

        _va = _value;
        _value = 0;
        op = Operator.ADD;
    }

    public void mul_keyPressed() {
        if (!Operator.NO_OPERATION.equals(op)) {
            equal_keyPressed();
        } else {
            _ui.updateDisplay();
        }

        _va = _value;
        _value = 0;
        op = Operator.MUL;
    }
}

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多