我正在用Java制作Android的基本计算器。我陷入了最后一步,它必须使用先前的输入添加输入。看看代码:
public void displayValue(){
String mything = display.getText().toString();
input = Integer.parseInt(mything);
}
public void number1(View view){
if (input == 0){display.setText("");}
display.append(Integer.toString(1));
displayValue();
}
public void number2(View view){
if (input == 0){display.setText("");}
display.append(Integer.toString(2));
displayValue();
}
public void plus(View view){
displayValue(); //result= 0
result = result + input; //result= input
input = 0; //input=0
//in this step input becomes 0 to let the user enter new number input but this
//input never add the old result and the equal shows the old result.
}
public void equal(View view){
displayValue();
display.setText(Integer.toString(result));
}
我注意到,如果我以相同的方法添加一行并将结果添加到输入中,我会得到正确的答案但是这样会有帮助,因为它也会有减号按钮。
有什么想法吗?
感谢。
答案 0 :(得分:0)
这很难说,因为你没有包含完整的代码,这会有所帮助,但可能是因为你在做数学之前在某些地方调用了displayValue();
?特别是在plus
方法中。
答案 1 :(得分:0)
好吧最后我想出了一个解决方案。 因为计算结果和新输入的唯一选择是相同的方法(因为逻辑上当用户按下相等按钮时,所以想要结束等式),所以我为每个减去加上计算添加了两个布尔值。然后我添加了两个加值或减去2的值的计算。 然后,当用户在计算的第一部分之间然后点击加号时,加号的布尔值变为真,并且在输入新输入并且点击等号之后,它执行计算的真实部分。嗯,这有点难以解释,但我想通过查看代码,你会得到我的意思。
boolean whenMinus = false;
boolean whenPlus = false;
public void plus(View view){
displayValue();
result = input;
input = 0;
whenPlus = true;
}
public void minus(View view){
displayValue();
result = input;
input = 0;
whenMinus = true;
}
public void equal(View view){
if (whenPlus == true){result = result + input; whenPlus = false;}
if (whenMinus == true){result = result - input; whenMinus = false;}
display.setText(Integer.toString(result));
}
我不确定这是否是制作此计算器的正确方法。但无论如何我解决了我的问题。很高兴评论我,让我知道它是标准方式还是有点黑客攻击。反正我也不是职业选手。