2014-10-29 59 views
0

我要求用戶輸入5個數字,並將其存儲到一個數組,所以我可以發送方法中的值,並從每個數組中減去5個數字。當我使用:C#用戶輸入詮釋數組

for(I=0;I<5;I++) { 
int[] val = Console.ReadLine();} 

它說我不能將int []轉換爲int。我的編程有點生疏。我也不知道如何將數組值從main發送到方法。

+0

您需要先在循環前創建數組。在循環中,讀取輸入,將其轉換爲數字,然後通過索引設置適當的數組元素。 – jmcilhinney 2014-10-29 03:22:23

回答

6

您將從控制檯輸入的字符串分配給int數組。這是錯誤的,原因有二:

  1. int陣列(int[])是ints的集合。
  2. 您從控制檯獲得的值不是int,需要先解析。

這是一個輕微的轉移,但我也不認爲你應該使用一個數組。 C#中的數組功能通常比內置的List<T>少得多。 (所有的搖滾歌星在here鐘聲)有些人說根本沒有理由使用數組 - 我不會走得那麼遠,但我認爲對於這種用例,只需將項添加到List比分配5個空格並按索引初始化值。

無論哪種方式,你應該使用int.TryParse(),不int.Parse(),因爲你會立即得到一個例外,如果你不檢查,如果用戶輸入是可解析到int。因此,從用戶採取的字符串示例代碼應該是這樣的:

List<int> userInts = new List<int>(); 

for (int i = 0; i < 5; i++) 
{ 
    string userValue = Console.ReadLine(); 
    int userInt; 
    if (int.TryParse(userValue, out userInt)) 
    { 
     userInts.Add(userInt); 
    } 
} 

如果您仍想使用磁盤陣列,如果有必要,只需更換List<int> userInts ...與int[] userInts = new int[5];,並更換userInts.Add(userInt)userInts[i] = userInt;

+1

其實你的代碼不會編譯,因爲你的int.TryParse實際上並沒有將userValue作爲參數... – Tyress 2014-10-29 03:42:43

+1

啊,馬虎。謝謝,編輯。 – furkle 2014-10-29 03:44:09

2

您初始化數組第一

int[] val = new int[5]; 

,然後當你的for循環做:

for (int i=0; i<val.Length; i++) 
{ 
    val[i] = int.Parse(Console.ReadLine()); 
} 

提示:從主發送數組值的方法,只是看如何static void main形成:

static void Main(string[] args) 

含義主要被接受的控制檯參數的字符串數組。

0

你只需要解析string從控制檯被輸入到int first.You做接受INT:

for(int i=0;i<myArray.Length;i++) { 

    myArray[i] = int.Parse(Console.ReadLine()); //Int32.Parse(Console.ReadLine()) also works 

就像@Furkle說,它總是最好使用TryParse()它使您能夠執行異常處理。 MSDN上有一個不錯的tutorial