我的问题是12 + 13 = 26.它首先取1并将其加到12,所以结果是13.然后,它需要13并将它添加到mresult是13.所以它给了我错误的答案。 我怎么知道用户完成输入,所以我可以将值初始化为number2?
@Override
public void afterTextChanged(Editable s) {
//CURRENT_ACTION = DEF_____________________________________________
if((CURRENT_ACTION == DEF) && !textNumber.getText().toString().isEmpty()){
number1 = Double.parseDouble(textNumber.getText().toString());
mResult = number1;
textResult.setText(String.valueOf(mResult));
}
//CURRENT_ACTION = ADD______________________________________________
else if(CURRENT_ACTION == ADD && !textNumber.getText().toString().isEmpty()){
number2 = Double.parseDouble(s.toString());
mResult = mResult + number2;
textResult.setText(String.valueOf(mResult));
}
//CURRENT_ACTION = SUB__________________________________________________
else if(CURRENT_ACTION == SUB && !textNumber.getText().toString().isEmpty()){
number2 = Double.parseDouble(textNumber.getText().toString());
mResult = mResult - number2;
textResult.setText(String.valueOf(mResult));
}
}
});
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CURRENT_ACTION = ADD;
textNumber.setText(null);
}
});
buttonSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CURRENT_ACTION = SUB;
textNumber.setText(null);
}
});
答案 0 :(得分:1)
通过查看代码,我想您的EditText textNumber
用于输入所有内容。首先输入第一个数字,这个数字显示在结果TextView中。然后输入符号+
,CURRENT_ACTION
设置为ADD
。然后输入第二个数字,您希望结果textview显示结果。
在您的代码中,您将第一个数字存储在三个位置:
没有必要(提示:这是结果)
您的问题是您修改并重用mResult。因此,您不要将第一个数字添加到第二个数字,而将临时结果添加到第二个数字。
当您遇到ADD
时,从变量number1
获取第一个数字(不会被修改),并添加从EditText获得的第二个数字。然后将结果直接存储在resultTextView中(mResult仍然没用)。
@Override
public void afterTextChanged(Editable s) {
//CURRENT_ACTION = DEF_____________________________________________
if((CURRENT_ACTION == DEF) && !textNumber.getText().toString().isEmpty()){
//store the first number
number1 = Double.parseDouble(textNumber.getText().toString());
//display current result : number1
textResult.setText(String.valueOf(mResult));
}
//CURRENT_ACTION = ADD______________________________________________
else if(CURRENT_ACTION == ADD && !textNumber.getText().toString().isEmpty()){
//store second number
number2 = Double.parseDouble(s.toString());
// display second + first number as result
textResult.setText(String.valueOf(number1 + number2));
}
}
});
如果您想要添加第三个数字。您需要修改更改CURRENT_ACTION
的代码。当用户在您的editText中输入+
时,您可以将CURRENT_ACTION
定义为ADD
。在这里,您可以添加一些代码来获取当前结果并将其存储为number1。
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CURRENT_ACTION = ADD;
textNumber.setText(null);
//get the result and store it as the first number
//then we will add the second number
// that will be get from the other part of the code
//to this first number
number1 = Double.parseDouble(textResult.getText().toString());
}
});
在这种情况下,将第一个值(当你遇到DEF
时)存储到number1会变得无用,因为当用户按下+按钮时,它将被存储到number1。