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'方法的子表達式。 –