0
私はすでにStackoverflowでさまざまなソリューションを見つけましたが、理解できなかったことがいくつかありました。C#でスタックを使用してInfix-Expressionの出力を計算する方法
たとえば、(1 +(4 *(2 + 3)))+((2 + 3)*(4 * 5))))の出力を計算するには、
私の方法は、以下のように見えますが、私はそれでミスがたくさんある知っている:
public static int ComputeInfix(string infix) {
Stack<char> operatorstack = new Stack<char>();
Stack<int> operandstack = new Stack<int>();
for(int j = 0; j < infix.Length; j++) {
char c = infix[j];
if (c => 0 && c <= 9) {
operandstack.Push(c);
}
else if ((c == '+' || c == '*' || c == '/' || c == '-')) {
if (operatorstack.IsEmpty()) {
operatorstack.Push(c);
}
else {
if (operatorstack.Peek() != '*' || operatorstack.Peek() != '/') {
operatorstack.Push(c);
}
}
}
else if (c == '(') {
operatorstack.Push(c);
}
else if (c == ')') {
operatorstack.Pop();
}
}
return infix;
}
今すぐにそれを変更:
Stack<char> operatorstack = new Stack<char>();
Stack<char> operandstack = new Stack<char>();
for(int j = 0; j < infix.Length; j++) {
char c = infix[j];
if (c => '0' && c <= '9') {
operandstack.Push(c);
}
しかし、エラーが表示されます。
Infix.cs(16,8): error CS0136: A local variable named
c' cannot be declared in this scope because it would give a different meaning to
c', which is already used in a `parent or current' scope to denote something else
[Calculator.net?] (http://weblogs.asp.net/pwelter34/archive/2007/05/05/calculator-net-calculator-that-evaluates-math-expressions.aspx) – PoweredByOrange
変更されました'(c => '0' && c = '9')' – Patzi0207
'c => 0 && c <= 9'という行は間違っています。 'c'変数はcharです。あなたがそのcharの整数を必要とするならば、 'int number = int.Parse(c.ToString());' –