2014-12-19 70 views
2
String name = Console.ReadLine(); 
      System.Console.WriteLine("input name"); 
      System.Console.WriteLine("hello {0}", name); 
      int hello = Console.Read(); 
      System.Console.WriteLine("First number input" + hello); 
      int hello2 = Console.Read(); 
      Console.ReadKey(); 
      System.Console.WriteLine("Second number input" + hello2); 

在這行代碼中,它顯示輸入的名稱,然後顯示第二個鍵的第一個鍵(即hello)的輸入,但無論我做什麼,它總是顯示爲13.我該如何解決這個問題?C#Console.read()不顯示正確的數字輸入?

+0

iirc,13是「Enter」鍵的關鍵代碼。據我所知,'Console.Read()'只讀取一個字符,不包括「Enter」。任何人都在意解釋他爲什麼在'hello2'中得到13分? – cbreezier 2014-12-19 00:43:11

+0

@Crazysheep它也接受Enter。 – 2014-12-19 00:57:28

+0

它看到m * s接受兩個數字我注意到,如果我把kj它讀取k和j作爲單獨的,並給我的數字,但如果我嘗試單獨輸入將適用於13,我知道爲什麼。我不得不在輸入後按回車,所以它分配第二個整數作爲輸入是13. Idk如何解決這個問題:/例如在我的代碼: int x = Console.Read(); Console.WriteLine(x); int y = Console.Read(); Console.WriteLine(y); 我把MK我收到109和107兩個相應的數字。這是偉大的,但所有,但我想知道如何讓他們分別輸入 – 2014-12-19 02:33:33

回答

6

Console.Read不解析輸入字符。誤導它返回一個整數,但這實際上是輸入單個字符的數字表示。

改爲使用Console.ReadLine,並將結果解析爲數字。

int hello; 
while(!int.TryParse(Console.ReadLine(), out hello) 
{ 
    // This will happen if the user types something that's not a number 
    Console.WriteLine("Please enter a valid number:"); 
} 
Console.WriteLine("First number input" + hello); 
0

您可以修改這樣的: //assumed you want to get integer values String name = Console.ReadLine(); System.Console.WriteLine("input name"); System.Console.WriteLine("hello {0}", name); int hello = Convert.ToInt16(Console.ReadLine()); System.Console.WriteLine("First number input" + hello); int hello2 = Convert.ToInt16(Console.ReadLine()); Console.ReadKey(); System.Console.WriteLine("Second number input" + hello2);

+0

你應該使用'Convert.ToInt32',因爲你正在分配一個'int'。但是,請注意,如果最終用戶輸入的內容不是int,則會引發異常。 – 2014-12-19 00:47:48

+0

感謝您的糾正,但int32和int16之間的差異只是他們的大小,我錯了嗎?它也是一個依賴拱形的術語。提供int16的原因,資源效率。 – 2014-12-19 00:55:10

+0

我是這個遺憾的小白菜; - ;你可以請裏德分解你寫給我的代碼!就像我們將console.readline轉換爲int的目的一樣?非常感謝您的幫助和快速回復! – 2014-12-19 01:59:29

0

我發現你的代碼的一些基本問題,並把我的想法在下面的評論。

String name = Console.ReadLine(); // Shows the cursor without a prompt to the user 
System.Console.WriteLine("input name"); 
System.Console.WriteLine("hello {0}", name); 
int hello = Console.Read(); // This line reads the new line character (13) from the above line 
System.Console.WriteLine("First number input" + hello); // Displays 13 (new line character if the user doesn't enter any value) 
int hello2 = Console.Read(); 
Console.ReadKey(); // Exits the console as soon as a user press a key 
System.Console.WriteLine("Second number input" + hello2); // This is never displays to the user 

我以爲在向您展示所有問題後重新考慮它。這是我想出的。看一看。由於您試圖用用戶輸入構建一個簡單的應用程序,因此您還必須考慮用戶輸入和輸出流。

int firstNumber; 
int secondNumber; 
string name = string.Empty; 

do 
{ 
    Console.Clear(); 
    Console.Write("What is your name?"); 
    name = Console.ReadLine();   
} while (string.IsNullOrEmpty(name)); 

Console.WriteLine("Hello {0}", name); 

do 
{ 
    // This will happen if the user types something that's not a number 
    Console.Clear(); 
    Console.WriteLine("Hello {0}", name); 
    Console.Write("Please enter the first number:"); 
} 
while (!int.TryParse(Console.ReadLine(), out firstNumber)); 

do 
{ 
    // This will happen if the user types something that's not a number 
    Console.Clear(); 
    Console.WriteLine("Hello {0}", name); 
    Console.WriteLine("First number is: " + firstNumber); 
    Console.Write("Please enter the second number:"); 
} 
while (!int.TryParse(Console.ReadLine(), out secondNumber)); 

Console.WriteLine("Second number is: " + secondNumber); 
Console.Read(); 
+0

我使用了@reedcopsey的建議來檢查數字 – Sam 2014-12-19 02:10:26