gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:36:21 25 4
gpt4 key购买 nike

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

// 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] 处是否有“-”符号的情况。但我不确定如何执行此操作,因为计算只会使应用程序崩溃。

最佳答案

我会这样改变它:

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”

关于java - 计算负数减去另一个数字时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com