即時通訊嘗試編寫循環方法,通過相同的方法。應該循環的次數取決於用戶輸入的字符串的長度。例如,如果字符串是1 + 2-3/4 * 3 + 2。該程序應該存儲前3個數字和前2個運算符。然後做操作的順序,因爲這個將是1 + 2-3 = 3-3。那麼它應該得到下一個運算符和字符串中的下一個數字。這是我迄今爲止的循環,它不是循環,雖然整個字符串,並用新的號碼和運營商循環方法
public static double solveExpresion(String e) {
double answer = 0;
for (int i = 0; i < e.length(); i++) {
String operand1;
String operand2;
String operand3;
operand1 = getOperand(e);
o1 = Double.parseDouble(operand1);
operator1 = getOperator(expression);
operand2 = getOperand(expression);
o2 = Double.parseDouble(operand2);
operator2 = getOperator(expression);
operand3 = getOperand(expression);
o3 = Double.parseDouble(operand3);
answer = orderOfOperation(operator1, operator2);
/* operator2 = getOperator(expression);
operand3 = getOperand(expression);
o3 = Double.parseDouble(operand3);
answer = orderOfOperation(operator1, operator2);*/
}
return (answer);
}
注更新它:我不允許使用任何類型的陣列。
這是我getOperand和getOperator方法
public static String getOperand(String s) {
s = s.trim();
String num = "";
while (s.length() > 0 && s.charAt(0) >= '0' && s.charAt(0) <= '9') {
num = num + s.charAt(0);
s = s.substring(1);
}
expression = s;
return (num);
}
public static char getOperator(String s) {
char r = 0;
if (s.length() > 0) {
r = s.charAt(0);
s = s.substring(1);
}
expression = s;
return (r);
}
我們可以看到你的'getOperand'和'getOperator'方法嗎? –
'然後做操作的順序,因爲這個將是1 + 2-3 = 3-3'我沒有明白你的意思。通常將「1 + 2-3/4 * 3 + 2」評估爲「1 + 2 - ((3/4)* 3)+ 2」。您使用的是什麼「操作順序」的定義?你爲什麼只看前三個數字? –
@MarkByers - 我的猜測是OP的任務是評估所有運營商的優先級相同,並從左向右進行評估。 –