文字列表現「1プラス1マイナス2プラス2マイナス2マイナス5プラス10」を区切って文字列[]にトークンを集めて、専門用語のコーディングを開始しました。1 プラス 1 マイナス 2 プラス 2 マイナス 2 マイナス 5 プラス 10=5
public int Calculate(string expression)
{
//TODO: implement this
if (string.IsNullOrEmpty(expression))
return 0;
//expression = "100 plus 100 minus 200";
string[] tokens = expression.Split();
int i= 0;
int result=0;
for (; i < tokens.Length; )
{
int a = 0;
int b = 0;
if (i < 1)
{
a = int.Parse(tokens[i]);
i++;
}
else if (i % 2 != 0 && tokens[i].ToString() == "plus")
{
i++;
b = int.Parse(tokens[i]);
a = result;
result = a + b;
i = i + 2;
}
if (tokens[i].ToString() == "plus")
{
i++;
b = int.Parse(tokens[i]);
result += a + b;
i = i + 2;
}
else if(i>1)
{
a = result;
b = int.Parse(tokens[i]);
result = a - b;
i=i+1;
}
else
{
i++;
//a = result;
b = int.Parse(tokens[i]);
result += a - b;
i++;
}
}
return result;
}
いくつかの基本的な計算操作を計算しましたが、上記の文字列操作に固執しました。計算を実行して、トークン化された文字列から整数値を返す必要があります。より良い解決策を教えてください。