控制台.NET的输出错误

时间:2011-07-10 10:28:05

标签: c# .net

为什么输出不是我想要的......

以下是代码:

int num;
Console.WriteLine("Please input age: ");
num = Console.Read();
Console.WriteLine(num);

例如我输入5,输出是53.它需要是5,代码上发生了什么。有人可以解释一下吗?谢谢。

2 个答案:

答案 0 :(得分:8)

因为Console.Read()返回流中下一个字符的字符代码。 ASCII字符代码'5'是53。

您需要将整行读作字符串

string str = Console.Readline();

然后Parse()TryParse()它。

 int num;
 try
 {  
     num = int.Parse(str);
 }
 catch(Exception e)
 {
     Console.Writeline("Not a number!");
 }

答案 1 :(得分:4)

根据Read方法的文档:

  

从标准输入流中读取下一个字符。

因此,这将返回用户输入的单个字符的ASCII值。

您需要读取整行并将字符串解析为整数:

int num;
Console.WriteLine("Please input age: ");
num = int.Parse(Console.ReadLine());
Console.WriteLine(num);

当然,如果用户输入无效的整数,这种解析可能会失败。所以你可以像这样处理它:

int num;
Console.WriteLine("Please input age: ");
if (!int.TryParse(Console.ReadLine(), out num))
{
    Console.WriteLine("Please enter a valid age");
}
else
{
    Console.WriteLine(num);
}