2011-03-02 78 views
2

我無法用Console.Read()方法讀取第二個字符。我的意思是我沒有得到任何提示從鍵盤讀取第二個字符。請幫忙嗎?另外,我知道字符默認是一個int,但我們仍然需要從輸入讀取時將其轉換爲char,是不是?下面的代碼讀取第一個字符,但第二個字符終止。在C中讀取兩個字符#

public static void Main() 
    { 
     Console.WriteLine("The First Character?:"); 
     char firstChar=Convert.ToChar(Console.Read()); 

     Console.WriteLine("The Second Character?:"); 
     char secondChar=Convert.ToChar(Console.Read()); 
    } 
+1

http://msdn.microsoft.com/en-us/library/system.console.read.aspx – 2011-03-02 02:09:37

回答

4

請參閱Console.Read。具體而言,這部分:

Read方法阻止其返回,而您鍵入輸入的字符;當您按下Enter鍵時它會終止。按Enter鍵將依賴於平臺的行終止序列添加到您的輸入中(例如,Windows追加回車換行符序列)。隨後對Read方法的調用一次檢索您的輸入一個字符。讀取最後一個字符後,Read再次阻止其返回,並重復該循環。

+0

那麼讀取問題表單連續鍵的最佳方法是什麼?我想問幾個問題,答案是肯定答案,否定答案,然後是最後一些控制陳述。希望你明白我的意思:) – 2011-03-02 02:16:16

+0

在這種情況下,我會簡單地使用Console.ReadLine,並將整行輸入作爲字符串與您的預期輸入進行比較。對於最終使用的輸入法,請務必檢查EOF條件的返回值。 – 2011-03-02 02:19:46

+0

我可能誤解了你最後的評論。如果你只是想'Y'與'N',Console.ReadKey會做,你可以去與其他答案之一。 – 2011-03-02 02:30:40

7

看起來像Console.ReadKey()是你真正想要的。

2

您的第二個Console.Read()正在消耗回車,從而終止第一次讀取。

Console.ReadKey有點友好使用,因爲它不需要終止回車。如果你想繼續使用Console.Read,你可以嘗試消耗和丟棄第二提示之前回車,如:

public static void Main() 
{ 
    Console.WriteLine("The First Character?:"); 
    char firstChar = Convert.ToChar(Console.Read()); 

    Console.Read(); // consume carriage return 

    Console.WriteLine("The Second Character?:"); 
    char secondChar = Convert.ToChar(Console.Read()); 

    Console.WriteLine(secondChar); 
} 
3

也許這代碼是更接近你正在尋找...

public static void Main() 
{ 
     Console.WriteLine("The First Character?:"); 
     char firstChar = Convert.ToChar(Console.ReadKey().KeyChar); 
     Console.WriteLine(); 
     Console.WriteLine("The Second Character?:"); 
     char secondChar = Convert.ToChar(Console.ReadKey().KeyChar); 
}