编辑不返回负值的文本

时间:2014-05-19 20:59:52

标签: java android

我在我的Android应用程序中调用此方法:

public void Subtraction() {
    text.setText("");
    long total = num1 - num2;
    text.setText(Long.toString(total));
}

现在,当我计算15-20时,我得不到-5,而是得到0。

num1和num2被声明为long。

有谁知道为什么?

谢谢你的时间!

编辑:我在文本字段中从用户输入获取num1和num2:

// Subtraction case
        case R.id.buttonsubtract:
            division = false;
            addition = false;
            multiply = false;

            num1 = Long.parseLong(text.getText().toString());
            num2 = Long.parseLong(text.getText().toString());
            text.setText(text.getText() + "-");
            subtraction = true;
            break;

1 个答案:

答案 0 :(得分:2)

你的价值为0的原因是因为num1和amp; num2是从同一文本字段中提取的,text'因此它们具有相同的价值。

所以说如果用户在EditText字段text中输入了值4,那么num1& num2将具有相同的值。

如果您有单独的文本字段供用户输入num1& num2,那么你应该从那些单独的EditText字段中读取值。

如果你只想使用一个文本字段,有多种方法可以处理它,一种简单的方法如下(我假设你只处理长值):

1)初始化一个类变量long leftOperand = 0; 2)当用户点击+,_,*,/然后将变量的值放在变量leftOperand中的文本字段中。

 leftOperand  = Long.parseLong(text.getText().toString());

还存储用户想要执行的操作(例如以枚举的形式)。

3)现在当用户按下' ='然后只计算价值    long newValue = Long.parseLong(text.getText()。toString());

long output = leftOperand   (operation) newValue ;