Console.WriteLine("输入两个数字");
            string s1 = Console.ReadLine();
            int i1 = Convert.ToInt32(s1);
            string s2 = Console.ReadLine();
            int i2 = Convert.ToInt32(s2);
            //int i1 = Convert.ToInt32( Console.ReadLine());
            //int i2 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("{0} {1}",i1,i2);
            if (i1 > 0 && i2 > 0)
            {
                i1++;
                Console.WriteLine(i1 + i2);
            }
            else if (i1 < 0 && i2 < 0)
            {
                i1 = i1 - 10;
                Console.WriteLine(i1 * i2);
            }
            else if(i1 == 0 && i2 == 0)
                Console.WriteLine("数据有误");
            else
                Console.WriteLine(Math.Abs( i1*i2));            Console.ReadKey();运行以后,在提示输入数字后,输入了19 18 ,然后就有了异常

解决方案 »

  1.   

    19和18要分2行输入..
    输入19 18,int i1 = Convert.ToInt32(s1);转型的时候会出错
      

  2.   

    看看MSDN Console.ReadLine()的解释
    http://msdn.microsoft.com/zh-cn/library/system.console.readline%28VS.80%29.aspxConsole.WriteLine("输入两个数字");
      string s1 = Console.ReadLine();
      int i1 = Convert.ToInt32(s1);
      string s2 = Console.ReadLine();
      int i2 = Convert.ToInt32(s2);
    你输入 19 18后打回车,s1被赋值为字符串“19 18”
    将s1用Convert.ToInt32强转为int,你说报错不报错?
      

  3.   

    恩,很赞成,因为你用了两个readline来接收输入的值,输入第一个数后需要回车输入第二个数
      

  4.   

    肯定出错了,string s1 = Console.ReadLine();
                int i1 = Convert.ToInt32(s1);
    Console.ReadLine();是读入一行信息,你输入 19 18中间有空格,就不能转换为int型,这是string型。
    而且s2就没有得到值18;
    你应该输入一个数后,按回车,再输入下一数就可以了