2011-07-10 83 views
0

为什么输出不是我想要什么......错误输出控制台.NET

下面的代码:

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

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

+5

这个例子和你研究ASP.NET的事实有一些关系吗?如果是,请解释。 – Tigran

回答

8

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

你需要阅读整行作为一个字符串

string str = Console.Readline(); 

,然后Parse()它或它TryParse()

int num; 
try 
{ 
    num = int.Parse(str); 
} 
catch(Exception e) 
{ 
    Console.Writeline("Not a number!"); 
} 
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); 
}