两种控制台输入方法的区别

时间:2014-09-20 08:28:11

标签: c# console

我正在尝试通过接受来自用户的输入来使用以下代码来计算矩形的区域,该代码可以正常工作

public void AreaOfRectangle()
{
    Console.WriteLine("Enter Width");
    Width = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("Enter Length");
    Lenth = Convert.ToInt32(Console.ReadLine());
    //Width = 24.5;
    //Lenth = 24.5;
    //double area;
}

但如果我以下面的方式写相同的话,我得到的区域值不正确。

public void AreaOfRectangle()
{
    Console.WriteLine("Enter Width");
    Width = Console.Read();
    Console.WriteLine("Enter Length");
    Lenth = Console.Read();
    //Width = 24.5;
    //Lenth = 24.5;
    //double area;
}

任何人都可以告诉我两种方法逻辑之间有什么区别吗?

2 个答案:

答案 0 :(得分:2)

According to the documentation Console.Read()正在阅读下一个字符。

所以如果你输入:

42

然后Console.Read()将仅返回4(作为字符,如果我没有记错,则为52 int)。然后,下一次调用将读取2,其为50 int。它基本上读取下一个字符并将其解释为整数。

因此,如果您想阅读整行,最好坚持使用Console.ReadLine()

答案 1 :(得分:1)

第一个是读取字符串并将其解析为int。它会读取您输入的所有信息,直到Enter

第二个是阅读char。如托马斯所说,请注意,如果您输入123并点击Enter,则Console.Read()将仅1,但如果您有后续Console.Read(),则为&#39} ;取2然后3。所以我怀疑这是你想要实现的目标。

如果你试图通过乘以字符来计算面积......这没有任何意义。

我建议使用:

int width = 0;
width = Int32.TryParse(Console.ReadLine(), out width);

现在宽度将为零或有效的int。

正如评论建议的那样,如果您正在寻找24.5之类的内容,请转到Double.TryParse