私はC#で配列を持つ簡単な電卓を作ろうとしています。まず、2つの整数と1つの演算子だけを使って作ってみました。うまくいきました。今私は、ユーザーが好きなだけ式を作ることができるようにしようとしています。たとえば、1つの演算子と2つの整数だけを含む単純な9 + 8ではなく、7 * 7 + 1/50となります。問題は、複数の数値と演算子を持つ長い式を入力するたびに、最初の2つの数値だけが最初の演算子で計算されることです。この問題の良い解決策は何ですか?前もって感謝します。C#で配列を持つ簡単な計算機を作成する
static void Main()
{
while (true)
{
Console.WriteLine("Write an expression with two numbers and an operator with space in-between, for example, 4 + 2");
string expression;
string[] array;
string[] array1;
expression = Console.ReadLine();
array = expression.Split();
array1 = Calculation(array);
Console.WriteLine("Press ENTER to write a new expression.");
Console.ReadLine();
Console.Clear();
}
}
static string[] Calculation(string[] arr)
{
double numLeft= 0.0;
double numRight = 0.0;
string sign = "";
double result = 0.0;
int index = 1;
while (true)
{
numLeft = Convert.ToDouble(arr[0]);
sign = Convert.ToString(arr[index]);
numRight = Convert.ToDouble(arr[index + 1]);
index = index + 2;
if (sign == "+")
{
Console.Clear();
Console.WriteLine();
result= result + numLeft;
}
else if (sign == "-")
{
Console.Clear();
result = result + numLeft;
numLeft = 0 - numRight;
}
else if (sign == "*")
{
Console.Clear();
numLeft = numLeft * numRight;
}
else if (sign == "/")
{
Console.Clear();
numLeft = numLeft/numRight;
}
else
{
break;
}
result = result + numLeft;
Console.WriteLine("Answer: {0}", result);
return arr;
}
return arr;
}
どのように異なる優先順位の演算子を扱いますか? '/'と '*'は '+'と ' - 'よりも高い優先度を持っています。このような複雑な表現を実装することは、それほど簡単ではないので、SOに関する単一の質問に対しては広すぎる。 – HimBromBeere
@HimBromBeere私はそれについて実際には考えていませんが、正直言ってこの時点では私は本当に解決策がありません。 –