控制台输入的两种方法之间的差异

本文关键字:之间 两种 输入 控制台 方法 | 更新日期: 2023-09-27 18:23:53

我正试图通过接受用户的输入来计算矩形的面积,下面的代码可以很好地进行

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;
}

有人能告诉我两种方法逻辑之间的区别吗?

控制台输入的两种方法之间的差异

根据文档Console.Read()正在读取下一个字符。

因此,如果您输入:

42

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

所以,如果你想读一整行的话,最好还是用Console.ReadLine()

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

第二个是读取char。正如Thomas所说,请注意,如果您键入123并点击Enter,则Console.Read()将只使用1,但如果您有后续的Console.Read(),则会使用2,然后使用3。所以我怀疑这是你想要实现的。

如果你试图通过乘以字符来计算面积。。。这毫无意义。

我建议使用:

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

现在宽度要么为零,要么为有效的整数

正如评论所建议的,如果你正在寻找类似24.5的东西,那就选择Double.TryParse