同じメソッドを通過するループメソッドを作成しようとしています。ループする回数は、ユーザーが入力した文字列の長さによって決まります。たとえば、文字列が 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);
}