-2
int a = Convert.ToInt32(Convert.ToString(Text1.Text));//here is the exception i am getting.
int b = Convert.ToInt32(Convert.ToString(Text1.Text));
char c = Convert.ToChar(Convert.ToString(Text1.Text));
int result = Convert.ToInt32(Convert.ToString(Text2.Text));

if (c == '+')
{
    result = a + b;
    Text2.Text += result;
}
else if (c == '-')
{
    result = a - b;
    Text2.Text += result;
}
else if (c == '/')
{
    result = a / b;
    Text2.Text += result;
}
else if (c == '*')
{
    result = a * b;
    Text2.Text += result;
}
else
    return;

「入力文字列が正しい形式ではありませんでした」として、このコードの形式例外が発生します。これは簡単な質問ですが、どこにも答えがありませんでした。

前もって感謝します。

4

2 に答える 2

0

確かに、これは見栄えのするものではありませんが、正の数で最大 3 桁の数に対しては仕事ができます。

これらの値をテストしました: 5+2result 1050*2result 10050*2+1result101

私のデモを見る

        string[] num = Regex.Split(textBox1.Text, @"\-|\+|\*|\/").Where(s => !String.IsNullOrEmpty(s)).ToArray(); // get Array for numbers
        string[] op = Regex.Split(textBox1.Text, @"\d{1,3}").Where(s => !String.IsNullOrEmpty(s)).ToArray(); // get Array for mathematical operators +,-,/,*
        int numCtr = 0, lastVal=0; // number counter and last Value accumulator
        string lastOp = ""; // last Operator
        foreach (string n in num)
        {
            numCtr++;
            if (numCtr == 1)
            {
                lastVal = int.Parse(n); // if first loop lastVal will have the first numeric value
            }
            else
            {
                if (!String.IsNullOrEmpty(lastOp)) // if last Operator not empty
                {
                    // Do the mathematical computation and accumulation
                    switch (lastOp) 
                    {
                        case "+":
                            lastVal = lastVal + int.Parse(n);
                            break;
                        case "-":
                            lastVal = lastVal - int.Parse(n);
                            break;
                        case "*":
                            lastVal = lastVal * int.Parse(n);
                            break;
                        case "/":
                            lastVal = lastVal + int.Parse(n);
                            break;

                    }
                }
            }
            int opCtr = 0;
            foreach (string o in op)
            {
                opCtr++;
                if (opCtr == numCtr) //will make sure it will get the next operator
                {
                    lastOp = o;  // get the last operator
                    break;
                }
            }
        }
        MessageBox.Show(lastVal.ToString());
于 2013-06-19T06:15:52.673 に答える