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