using System;
using System.Collections.Generic;
using System.Text;namespace My0412计算嚣
{
    class Program
    {
               static void Main(string[] args)
        {
            int result;
           
            int num1 = Convert.ToInt32(Console.ReadLine());
            char i;
            i = (char)Console.Read();
            int num2 = Convert.ToInt32(Console.ReadLine());
            if (i=='+')
            {
                result = num1 + num2;
                Console.WriteLine("{0}+{1}={2}", num1, num2, result);            }
            else  if (i=='-')
            {
                result = num1 - num2;
                Console.WriteLine("{0}-{1}={2}",num1,num2,result );
            }
            else if (i=='*')
            {
                result = num1 * num2;
                Console.WriteLine("{0}*{1}={2}", num1, num2, result);
            }
            else if (i=='/')
            {
                if (num2==0)
                {
                    Console.WriteLine("Error!The second number2 is not zero!");
                }
                result = num1 / num2;
                Console.WriteLine("{0}/{1}={2}", num1, num2, result);
            }        }
    }
}
这个程序在运行输入时只能这样输入
34
+45
输出结果是34+45=79
但是我想的是输入的形式是34+45=结果。
有没有解决的方法.

解决方案 »

  1.   

    你一行内输入完整后,用字符串查找的方法,找下里面的运算符就可以了,不过这个如果你在WinForm下面做会更加容易,因为有很多键盘事件可以控制。
      

  2.   


    namespace My0412计算嚣
    {
        class Program
        {
            static void Main(string[] args)
            {
                char ch;
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < 100; i++)
                {
                    ch = (char)Console.Read();
                    if (ch == '=')
                    {
                        break;
                    }
                    else
                    {
                        sb.Append(ch);
                    }
                }
                string str = sb.ToString();
                char[] arr = str.ToCharArray();
                int index = 0;
                for (int i = 0; i < arr.Length; i++)
                {
                    if (!char.IsNumber(arr[i]))
                    {
                        index = i;
                        break;
                    }
                }
                string num1 = str.Substring(0, index);
                string num2 = str.Substring(index + 1, arr.Length - 1 - index);
                int result = 0;
                int num01 = int.Parse(num1);
                char ii = arr[index];
                int num02 = int.Parse(num2);
                if (ii == '+')
                {
                    result = num01 + num02;
                }
                else if (ii == '-')
                {
                    result = num01 - num02;
                }
                else if (ii == '*')
                {
                    result = num01 * num02;
                }
                else if (ii == '/')
                {
                    if (num02 == 0)
                    {
                        Console.WriteLine("Error!The second number2 is not zero!");
                    }
                    result = num01 / num02;
                    Console.WriteLine("{0}/{1}={2}", num1, num02, result);
                }
                Console.WriteLine("{0}{1}{2}={3}", num1, ii.ToString(), num02, result);        }
        }
    }
      

  3.   

    其实还有一个简便方法,添加Microsoft.JScript和Microsoft.Vsa的引用。
    Console.WriteLine(Microsoft.JScript.Eval.JScriptEvaluate("1/3.5+2*6", Microsoft.JScript.Vsa.VsaEngine.CreateEngine()));
      

  4.   

    ASCII码字符直接用‘=’就可转为int值
    每输入一次,用switch来判断是哪个符号或数值
      

  5.   

    简单计算使用object o=new DataTable.Compute("","");
      

  6.   

    不考虑光标移动、退格、删除
    class Program
    {
        static void Main(string[] args)
        {
            var expression = "";
            var keyInfo = Console.ReadKey();
            while (keyInfo.KeyChar != '=')
            {
                if ("0123456789*+-/()".IndexOf(keyInfo.KeyChar) >= 0) // 0-9
                    expression += keyInfo.KeyChar;
                keyInfo = Console.ReadKey();
            }
            Console.WriteLine(new DataTable().Compute(expression, ""));
            Console.ReadKey();
        }
    }
      

  7.   

    哇,天天跟DataTable打交道,居然不知道其有 .Compute() 功能。
      

  8.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;namespace My0412计算嚣
    {
        class Program
        {
            static void Main(string[] args)
            {
                while (true)
                {
                    Console.Write("\n\n请输入表达式:\n");
                    string cmd = Console.ReadLine();
                    Match m = Regex.Match(cmd, @"^\s*(\d+)\s*(\+|-|\*|/)\s*(\d+)\s*=?$", RegexOptions.Singleline);
                    if (m.Success)
                    {
                        int num1 = int.Parse(m.Groups[1].Value);
                        char i = m.Groups[2].Value[0];
                        int num2 = int.Parse(m.Groups[3].Value);
                        int result;
                        if (i == '+')
                        {
                            result = num1 + num2;
                            Console.WriteLine("{0}+{1}={2}", num1, num2, result);                    }
                        else if (i == '-')
                        {
                            result = num1 - num2;
                            Console.WriteLine("{0}-{1}={2}", num1, num2, result);
                        }
                        else if (i == '*')
                        {
                            result = num1 * num2;
                            Console.WriteLine("{0}*{1}={2}", num1, num2, result);
                        }
                        else if (i == '/')
                        {
                            if (num2 == 0)
                            {
                                Console.WriteLine("Error!The second number2 is not zero!");
                            }
                            result = num1 / num2;
                            Console.WriteLine("{0}/{1}={2}", num1, num2, result);
                        }                }
                    else
                    {
                        //Console.WriteLine("表达式错误!");
                        break;
                    }
                }
            }
        }
    }运行结果:
    请输入表达式:
    123+456
    123+456=579
    请输入表达式:
    123*  3
    123*3=369
    请输入表达式:
       234  *  45 =
    234*45=10530
    请输入表达式:
      

  9.   

    不好意思,可能是我问题没有说清楚。六楼大侠的方法很好,但是不是我想要的。我要的是将ASCII码值转换成int型数据,再实现预期输出,而目前兄弟们都 是用的是正则表达式实现的。请问有没有人可以实现将C#中我题目晨ASCII码值转换成int型数据]?
      

  10.   

    问题依旧!!难道cSDN就没有高人了吗?~~~~~~~~~~
      

  11.   

    高人?
    你这种菜鸟问题还不需要高人
    关键是你的表达方式太差,你要做啥看不懂。Ascii码是啥你自己先搞明白