我正在尝试从用户输入中获取整数。我使用了以下
int locationX = Convert.ToInt32(Console.Read());
myObject.testFunction(locationX);
并出现了与我的testFunction相关的意外错误。我使用调试器,发现当我将数字2输入控制台时 - locationX变为50.这里发生了什么,我如何获得locationX以匹配用户输入?
答案 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);