让睡床正常工作
getting bedmas to work correctly
当我输入类似 3(5)
的内容时,我的代码失败了。
如何修改我的代码,使其在中间求解表达式然后相乘?
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(')');
这就是您需要在 parseTerm
中更改的内容,才能使像 3(5)
这样的表达式与 3*(5)
:
一样工作
double parseTerm() {
double x = parseFactor();
while(true) {
if (shift('*')) {
x *= parseFactor(); // multiply
} else if (shift('/')) {
x /= parseFactor(); // divide
} else if (shift('(')) { // brackets
x *= parseExpression();
shift(')');
} else {
return x;
}
}
}
(假设您的 parseFactor
方法是正确的,因为它在您的代码中不完整)
当我输入类似 3(5)
的内容时,我的代码失败了。
如何修改我的代码,使其在中间求解表达式然后相乘?
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(')');
这就是您需要在 parseTerm
中更改的内容,才能使像 3(5)
这样的表达式与 3*(5)
:
double parseTerm() {
double x = parseFactor();
while(true) {
if (shift('*')) {
x *= parseFactor(); // multiply
} else if (shift('/')) {
x /= parseFactor(); // divide
} else if (shift('(')) { // brackets
x *= parseExpression();
shift(')');
} else {
return x;
}
}
}
(假设您的 parseFactor
方法是正确的,因为它在您的代码中不完整)