计算负数减去另一个数字时出现问题

时间:2014-01-20 17:06:19

标签: java android

所以我写了一个计算器,它适用于所有输入,除非你采取负面的nuber而减去另一个,它不起作用。

// calculation logic
    public void calculate() {
        for (int i = 0; i < textField.length(); i++) {
            if (textField.getText().charAt(i) == '+') {
                result = Float.parseFloat(textField.getText().toString().substring(0, i)) + Float.parseFloat(textField.getText().toString().substring(i + 1, textField.length()));
                returnAnswer(decimalFormat.format(result));
            } else if (textField.getText().charAt(i) == '-') {
                if (textField.getText().charAt(0) != '-') {
                    result = Float.parseFloat(textField.getText().toString().substring(0, i)) - Float.parseFloat(textField.getText().toString().substring(i + 1, textField.length()));
                    returnAnswer(decimalFormat.format(result));
                }
                            // I know I need to write code here but what?
            } else if (textField.getText().charAt(i) == '*') {
                result = Float.parseFloat(textField.getText().toString().substring(0, i)) * Float.parseFloat(textField.getText().toString().substring(i + 1, textField.length()));
                returnAnswer(decimalFormat.format(result));
            } else if (textField.getText().charAt(i) == '÷') {
                result = Float.parseFloat(textField.getText().toString().substring(0, i)) / Float.parseFloat(textField.getText().toString().substring(i + 1, textField.length()));
                returnAnswer(decimalFormat.format(result));
            }
        }
        resultDisplayed = true;
    }

我已经评论了我认为问题出现的地方并且需要修复代码,因为如果 在位置[0]处有一个' - '符号,则不需要这样做。但我不知道如何做到这一点,因为计算只是崩溃应用程序。

1 个答案:

答案 0 :(得分:1)

我会改变它:

else if (textField.getText().charAt(i) == '-' && i !=0) {
  result = Float.parseFloat(textField.getText().toString().substring(0, i)) - Float.parseFloat(textField.getText().toString().substring(i + 1, textField.length()));
  returnAnswer(decimalFormat.format(result));
} 

然后它将忽略 - 如果它是第一个字符,但否则继续。在本地试过这个,看起来很有用。

编辑:对于+符号可能值得做同样的事情,以防万一有人输入'+ 5 * 10'