#java
#java
Вопрос:
Таким образом, мой калькулятор отлично работает с любыми вычислениями, включающими две цифры, включая кнопку C, однако, если я попытаюсь выполнить любые вычисления из трех цифр, это на самом деле не работает, например 1 2 3 = 5 может ли кто-нибудь сказать мне, почему это так, и в любом случае я мог бы это исправить?
public class Calculator {
private long currentInput; //current input
private long previousInput; // previous input
private long resu< // result of calculation
private String lastOperator = ""; // keeps track of the last operator entered
/* New digit entered as integer value i - moves currentInput 1 decimal place to the left and adds i in "one's column" */
public void inDigit(long i) {
currentInput = (currentInput * 10) i;
}
/* Operator entered - or * */
public void inOperator(String op) {
previousInput = currentInput; // save the new input as previous to get ready for next input
currentInput = 0;
lastOperator = op; // remember which operator was entered
}
/* Equals operation sets result to previousInput - or * currentInput (depending on lastOperator) */
public void inEquals() {
if (lastOperator.equals(" ")) {
result = previousInput currentInput;
} else if (lastOperator.equals("-")) {
result = previousInput - currentInput;
} else if (lastOperator.equals("*")) {
result = previousInput * currentInput;
}
lastOperator = ""; // reset last operator to "nothing"
}
/* Clear operation */
public void inClear() {
currentInput = 0;
previousInput = 0;
result = 0;
lastOperator = "";
}
/* returns the current result */
public String getResult() {
return Long.toString(result); //converts int to String
}
/* returns the previous input value */
public String getPreviousInput() {
return Long.toString(previousInput);
}
/* returns the current input value */
public String getCurrentInput() {
return Long.toString(currentInput);
}
Ответ №1:
Ну, вы сохраняете только последние два операнда, поэтому для вашего примера 1 2 3 = 5, 1 теряется при вводе второго знака , а 2 3 = 5.
Ответ №2:
Вы сохраняете только последние два введенных «ввода» (в previousInput
и currentInput
), поэтому, когда вы переходите к трем или более операндам без первого нажатия =
, все, кроме самых последних двух, исчезают.
Ответ №3:
ваша проблема в том, что когда вы добавляете новый оператор, вы просто сдвигаете свои значения без каких-либо вычислений, если предыдущий оператор сохранен и оба значения заданы при добавлении нового оператора, вам нужно выполнить вычисления для существующих значений и оператора перед изменением сохраненного оператора
Ответ №4:
Поскольку в вашем методе InEquals () вы используете только previousInput и currentInput, поэтому ваш 1 2 3 = 5, потому что для 2-го ‘ ‘ результат = 2 3