ユーザーが 6 つの double を入力するプログラムがあり、プログラムは double の間に入る演算子のすべての組み合わせを 1024 の個別の文字列として出力します。ユーザーが 14、17、200、1、5、および 118 を入力した場合の最初の 2 つの結果を次に示します。
"14.0+17.0+200.0+1.0+5.0+118.0"
"14.0+17.0+200.0+1.0+5.0-118.0"
私がやりたいのは、演算の順序に従って演算を実行することです。各 double は変数 a から f として格納され、これらの変数の間の各演算子は char a_b から e_f として格納されます。そう:
double a, b, c, d, e, f;
char a_b, b_c, c_d, d_e, e_f;
私が最初に考えたのは、次のようなコードを書くことでした。
public double operateGroup() {
value = 0;
switch (a_b) {
case '+':
value += a + b;
break;
case '-':
value += a - b;
break;
case '*':
value += a * b;
break;
case '/':
value += a / b;
break;
default:
break;
}
switch (b_c) {
case '+':
value += c;
break;
case '-':
value += -c;
break;
case '*':
value *= c;
break;
case '/':
value /= c;
break;
default:
break;
}
switch (c_d) {
case '+':
value += d;
break;
case '-':
value += -d;
break;
case '*':
value *= d;
break;
case '/':
value /= d;
break;
default:
break;
}
switch (d_e) {
case '+':
value += e;
break;
case '-':
value += -e;
break;
case '*':
value *= e;
break;
case '/':
value /= e;
break;
default:
break;
}
switch (e_f) {
case '+':
value += f;
break;
case '-':
value += -f;
break;
case '*':
value *= f;
break;
case '/':
value /= f;
break;
default:
break;
}
return value;
}
しかし、これは (a O b) O c) O d) O e) を実行するのと同じであるため、機能しません。ここで、O は任意の演算子です。任意のヒント?