有一个问题计算负数减去另一个数字



所以我已经写了一个计算器,它适用于所有输入,除非您拿出负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;
    }

我已经评论了我认为问题出现的地方,并且需要修复的代码,因为如果存在 a' - '符号在位置[0]。但是我不确定该怎么做,因为计算只是崩溃了。

我会这样更改它:

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'

相关内容

最新更新