2011-04-11 55 views
1

進出口更大的C#與ConsoleKeyInfo工作,但我有Console.ReadKey問題,當我嘗試寫數字比控制檯9更大,例如C#Console.ReadKey閱讀數超過9

ConsoleKeyInfo number; 
Console.Write("Write a number: "); 
number = Console.ReadKey(); 

如果我想寫10或11 ...控制檯只讀取「1」

我不想使用Console.ReadLine,因爲我不想爲每個數字按「Enter」。

是否有另一種方式使用Console.ReadKey在繼續之前等待1秒鐘?

感謝

+2

您可以輸入'10 '(只有一個Enter)並用'ReadLine'讀取它。你覺得可以嗎? – 2011-04-11 13:44:50

+1

對,因爲'ReadKey'只讀取* single *鍵。計算機如何知道您已完成輸入號碼,除非您按下一個鍵來表示該號碼?它曾經被稱爲「Any」鍵,現在它被稱爲「Enter」。 – 2011-04-11 13:46:01

+0

Console.Readkey按定義只讀取一個字符。從MSDN:'...獲取用戶按下的下一個字符或功能鍵'。 – 2011-04-11 13:46:02

回答

2

你能做的最好是使用Console.ReadLine()。程序無法知道您已完成編號。

UPDATE

如果你有一個固定長度的數目(即13位ISBN),您可以使用ReadKey,但這樣的:

string isbn = ""; 
while (isbn.Length < 13) 
{ 
    isbn += Console.ReadKey().KeyChar; 
} 
+0

那麼,如果數字是一個13位數的ISBN呢?程序*知道*以第13位完成。 – 2011-04-11 13:51:40

+0

在第一個鍵被按下之後,程序不能等待一秒鐘? – elmer 2011-04-11 13:53:34

+0

@Martinho - 雖然這種說法是正確的,但這不是OP要求的。沒有跡象表明數字大小是否有限制,或者數字總是*長度相同。 – ChrisF 2011-04-11 13:56:19

1

關於這一問題的評論說, ,Console.ReadKey根據定義只能讀取一個。如果您想從控制檯獲得更多輸入,則需要使用其他功能。嘗試這樣的例如:

Console.Write("Write a number: "); 
string line = Console.ReadLine(); 
int num = 0; 
if (line != null) 
    num = int.Parse(line); 

這是一個開始,最小的錯誤檢查。看看你能從那裏得到什麼。