2011-07-10 84 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); 
}