C# 两种控制台输入方法之间的差异
我试图通过接受用户的输入来计算矩形的面积,下面的代码运行良好C# 两种控制台输入方法之间的差异,c#,console,C#,Console,我试图通过接受用户的输入来计算矩形的面积,下面的代码运行良好 public void AreaOfRectangle() { Console.WriteLine("Enter Width"); Width = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Length"); Lenth = Convert.ToInt32(Console.ReadLine()); //Width
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;
}
有谁能告诉我两种方法逻辑之间的区别吗?第一种方法是读取字符串并将其解析为int。它将读取您键入的所有信息,直到
输入
第二个是读取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
第一个选项是读取字符串并将其解析为int。它将读取您键入的所有信息,直到进入
第二个是读取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
第一个选项是读取字符串并将其解析为int。它将读取您键入的所有信息,直到进入
第二个是读取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
第一个选项是读取字符串并将其解析为int。它将读取您键入的所有信息,直到进入
第二个是读取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
控制台。Read()
正在读取下一个字符
因此,如果您输入:
42
然后Console.Read()
将只返回4
(作为字符,如果我没有弄错的话,作为int
返回52)。然后,下一次调用将读取2
,作为int
的值为50。它基本上读取下一个字符并将其解释为整数
因此,如果您想阅读整行文字,最好坚持使用Console.ReadLine()
。Console.read()
正在阅读下一个字符
因此,如果您输入:
42
然后Console.Read()
将只返回4
(作为字符,如果我没有弄错的话,作为int
返回52)。然后,下一次调用将读取2
,作为int
的值为50。它基本上读取下一个字符并将其解释为整数
因此,如果您想阅读整行文字,最好坚持使用Console.ReadLine()
。Console.read()
正在阅读下一个字符
因此,如果您输入:
42
然后Console.Read()
将只返回4
(作为字符,如果我没有弄错的话,作为int
返回52)。然后,下一次调用将读取2
,作为int
的值为50。它基本上读取下一个字符并将其解释为整数
因此,如果您想阅读整行文字,最好坚持使用Console.ReadLine()
。Console.read()
正在阅读下一个字符
因此,如果您输入:
42
然后Console.Read()
将只返回4
(作为字符,如果我没有弄错的话,作为int
返回52)。然后,下一次调用将读取2
,作为int
的值为50。它基本上读取下一个字符并将其解释为整数
因此,如果您想阅读整行内容,最好还是坚持使用Console.ReadLine()
。现在明白了。谢谢你的快速回复。现在明白了。谢谢你的快速回复。现在明白了。谢谢你的快速回复。现在明白了。感谢您的快速回复。Convert.ToInt32()无法为您提供24.5您需要转换。ToDouble()Convert.ToInt32()无法为您提供24.5您需要转换。ToDouble()Convert.ToInt32()无法为您提供24.5您需要转换。ToDouble()Convert.ToInt32()无法为您提供24.5您需要转换。ToDouble()