所以我写了一个计算器,它适用于所有输入,除非你采取负面的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]处有一个' - '符号,则不需要这样做。但我不知道如何做到这一点,因为计算只是崩溃应用程序。
答案 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'