控制台输入的两种方法之间的差异
本文关键字:之间 两种 输入 控制台 方法 | 更新日期: 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
。