从控制台输入获取整数

时间:2013-11-24 18:48:59

标签: c#

我正在尝试从用户输入中获取整数。我使用了以下

int locationX = Convert.ToInt32(Console.Read());
myObject.testFunction(locationX);

并出现了与我的testFunction相关的意外错误。我使用调试器,发现当我将数字2输入控制台时 - locationX变为50.这里发生了什么,我如何获得locationX以匹配用户输入?

4 个答案:

答案 0 :(得分:4)

您需要使用Console.ReadLine()

Console.Read()从控制台输入流中读取下一个字符,而不是整行,这解释了为什么你得到了一个奇怪的结果。

答案 1 :(得分:4)

当用户按下回车键时,您应该阅读用户输入的输入 这是使用Console.ReadLine完成的。但是您在以下Convert.ToInt32中遇到问题。 如果用户没有输入可以转换为整数的内容,则代码将崩溃。

从控制台读取整数的正确方法是

int intValue;
string input = Console.ReadLine();
if(Int32.TryParse(input, out intValue))
    Console.WriteLine("Correct number typed");
else
    Console.WriteLine("The input is not a valid integer");

Int32.TryParse方法将尝试将输入字符串转换为有效整数。如果转换是可能的,那么它将设置通过out参数传递的整数并返回true。否则,传递的整数将设置为整数的默认值(零),方法返回false。

TryParse不会抛出昂贵的异常,例如Convert.ToInt32或简单的Int.Parse方法

答案 2 :(得分:3)

使用Console.ReadLine()代替Console.Read() -

int locationX = Convert.ToInt32(Console.ReadLine());

答案 3 :(得分:2)

在用户点击ENTER之前,请不要读取控制台输入。

int locationX = Convert.ToInt32(Console.ReadLine());
myObject.testFunction(locationX);