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()