Console.Read()和到Console.ReadLine()出现FormatExceptio

2019-10-18 12:46发布

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Int32 a = 3;
            Int32 b = 5;

            a = Console.Read();

            b = Convert.ToInt32(Console.ReadLine());

            Int32 a_plus_b = a + b;
            Console.WriteLine("a + b =" + a_plus_b.ToString());
        }
    }
}

我在得到一个错误消息ReadLine()函数:

出现FormatException了未处理。

问题是什么?

Answer 1:

我想这是仅仅因为你按下ENTER键键入第一个数字之后 。 让我们分析代码。 你的代码读取您输入的第一个符号a变量Read()函数的作用。 但是,当你按回车键ReadLine()函数返回空字符串,这是不正确的格式,将其转换为整数。

我建议你使用ReadLine()函数读取两个变量。 所以输入应该是7->[enter]->5->[enter] 。 然后你会得到a + b = 12作为结果。

static void Main(string[] args)
{
    Int32 a = 3;
    Int32 b = 5;

    a = Convert.ToInt32(Console.ReadLine());
    b = Convert.ToInt32(Console.ReadLine());

    Int32 a_plus_b = a + b;
    Console.WriteLine("a + b =" + a_plus_b.ToString());
}


Answer 2:

我认为你需要把:

b = Convert.ToInt32(Console.ReadLine());

里面的try-catch块。

祝好运。



Answer 3:

你想要做的就是使用尝试捕捉,因此,如果有人提出在什么不对,你可以找到

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Int32 a = 3;
            Int32 b = 5;

            a = Console.Read();
            try
            {
                b = Convert.ToInt32(Console.ReadLine());
                Int32 a_plus_b = a + b;
                Console.WriteLine("a + b =" + a_plus_b.ToString());
            }
            catch (FormatException e)
            {
                // Error handling, becuase the input couldn't be parsed to a integer.
            }


        }
    }
}


Answer 4:

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        Int32 a = Convert.ToInt32(Console.ReadLine());
        Int32 b = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("a + b = {0}", a + b);
    }
}

}



Answer 5:

你可以试试这个:

Int32 a = 3;
Int32 b = 5;

if (int.TryParse(Console.ReadLine(), out a))
{
    if (int.TryParse(Console.ReadLine(), out b))
    {
        Int32 a_plus_b = a + b;
        Console.WriteLine("a + b =" + a_plus_b.ToString());
    }
    else
    {
         //error parsing second input
    }
}
else 
{
     //error parsing first input
}       


文章来源: Console.Read() and Console.ReadLine() FormatException