0
当我输入类似3(5)
的东西时,我的代码失败。 如何修改我的代码,以便它在中间表达式中解决然后相乘?让bedmas正常工作
double parseTerm() {
double x = parseFactor();
while(true) {
if (shift('*')){
x *= parseFactor(); // multiply
}
else if (shift('/')){
x /= parseFactor(); // divide
}
else{
return x;
}
}
}
double parseExpression() {
double x = parseTerm();
while(true) {
if (shift('+')){
x += parseTerm(); // addition
}
else if (shift('-')){
x -= parseTerm(); // subtraction
}
else{
return x;
}
}
}
double parseFactor() {
if (shift('+')){
return parseFactor(); //plus
}
if (shift('-')){
return -parseFactor(); //minus
}
double x;
int startPos = this.pos;
if (shift('(')) { // brackets
x = parseExpression();
shift(')');
这是为什么用Java和JavaScript标记的? – Logan
对于所有那些想知道的人:[BEDMAS,支持括号,指数,除法,乘法,加法,减法](https://en.wikipedia.org/wiki/Order_of_operations)=操作顺序 –
请发布[mcve] - 一个既*最小*和**完整** - 上面的代码不完整,我不认为它是最小的。然后做出自己的尝试 - 如果它不起作用,请详细说明您尝试了什么以及出了什么问题。作为一个提示 - 如果你想要一个左括号('作为一个事实上的乘法运算符,那么你需要在'parseTerm'方法中使用类似'parseFactor'方法的子表达式。 –