-1

我正在用 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));

}

我注意到,如果我以相等的方法添加一行并将结果添加到输入中,我会得到正确的答案,但这不会有帮助,因为也会有减号按钮。

有任何想法吗?

谢谢。

4

2 回答 2

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));

}

我不确定这是否是制作这个计算器的正确方法。但无论如何我解决了我的问题。很高兴评论我,让我知道这是标准方式还是有点黑客行为。反正我不是专业人士。

于 2013-10-19T15:54:42.570 回答
0

这肯定很难说,因为你没有包含完整的代码,这会很有帮助,但可能是因为你displayValue();在做数学之前在某些地方打电话吗?具体在plus方法上。

于 2013-10-19T00:54:25.377 回答