2013-03-29 171 views
0

我正在運行一個非常簡單的程序,只是提示用戶輸入一個數字,現在只需將它打印在屏幕上。但由於某些原因,我不知道,我輸入數字似乎增加了數48Console.Read()不會捕獲正確的信息

例如: 我進入2 和它提出了50

是否有某種根本性法律,我'監督,或某種錯誤的,我在我的代碼做

我是初學者,如果你沒有注意到

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int Num; 
      Console.WriteLine("Please Input Number of Rows you want to make in your pyrimid: "); 
      Num = Console.Read(); 

      Console.WriteLine(Num);// Just to check if it is getting the right number 
      Console.Read();//This is Here just so the console window doesn't close when the program runs 

     } 
    } 
} 

編輯:不想成爲一個麻煩,但現在得到這個錯誤num = int.Parse(Console.Read()); as'int.Parse(string)'的最佳重載方法匹配有一些無效參數。這是否意味着我需要一個重載方法?

回答

5

Console.Read回報char所以當你將它轉換爲int喲得到2 ASCII碼是!你應該解析爲int,而不是(隱含的)澆鑄:

Num = int.Parse(Console.Read()); 

注:

  1. 如果輸入可以是一個非數字值,使用int.TryParse
  2. 該公約的局部變量在C#是camelCase,所以請將Num更改爲num
+0

'int.Parse(INT)'讀取值的ASCII值? –

+0

Int32.Parse好像好多了! –

+0

哦,廢話!謝謝你,我應該意識到這一點!歡呼聲 – user2224223

1

Console.Read返回字符代碼而不是字符本身。

char num = (char)Console.Read(); 
Console.WriteLine(int.Parse(num.ToString())); 

此代碼並不理想,但它顯示了正在發生的事情。既然你期待一個數字,輸入您還可以使用

int num = Console.Read() - 48; 
0

Console.Read從標準輸入讀取讀取字節。

250

您需要解析從控制檯

Num = Int32.Parse(Console.Read()); // or Num = int.Parse(Console.Read());