gpt4 book ai didi

java - 减法返回错误答案

转载 作者:行者123 更新时间:2023-12-01 08:11:46 24 4
gpt4 key购买 nike

出于某种原因,当我在这里测试“100-50-40”时,我得到的是“60”而不是“10”。所有其他组合都有效,例如“10+20”和“40-20”。当我尝试连续减去多个数字时,就会出现问题。有什么想法吗?

public double add(String exp){
String left = "";
String right = "";
double leftValue = 0;
double rightValue = 0;
double answer = 0;

for(int i=0;i<exp.length();i++)
{
if(exp.charAt(i)=='+')
{
right = exp.substring(i+1, exp.length());
leftValue = subtract(left);
rightValue = add(right);
answer = leftValue + rightValue;
return answer;
}
else
{
left = left + exp.substring(i,(i+1));

}
} // End for loop
answer = subtract(exp);
return answer;

} // End add method

//guaranteed there are no addition operators in exp
public double subtract(String exp){
String left = "";
String right = "";
double leftValue = 0;
double rightValue = 0;
double answer = 0;

for(int i=0;i<exp.length();i++)
{
if(exp.charAt(i)=='-')
{
right = exp.substring(i+1, exp.length());
leftValue = Double.parseDouble(left);
rightValue = subtract(right);
answer = leftValue - rightValue;
return answer;
}
else
{
left = left + exp.substring(i,(i+1));
}
} // End for loop
answer = Double.parseDouble(exp);
return answer;
}

最佳答案

您得到 90 分,因为您在从 100 中减去结果之前评估了 50-40。

在此代码中,您将在第一个减号处除以表达式:

        right = exp.substring(i+1, exp.length());
leftValue = Double.parseDouble(left);
rightValue = subtract(right);
answer = leftValue - rightValue;

右值是“50-40”,左值是100。

您可以通过查找最后减号来解决这种特殊情况。

也就是说,如果您最终想要使用其他运算符和分组处理更复杂的表达式,您可能会发现阅读有关手写的更多信息 recursive-descent parsers 很有用。或使用parser generators 。使用解析器生成器,您可以指定所需的语法,该工具会构建代码来为您解析它。我最喜欢的 Java 解析器生成器是 Antlr

关于java - 减法返回错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725440/

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