2015-11-03 137 views
0

我有一個字符串數組來定義用戶輸入,我需要將字符串數組轉換成一個短陣列,所以我可以使用這些值進行計算。我需要使用一個數組,因爲我需要稍後參考所有的值。 這是我有:將一個字符串數組轉換成一個短陣列

string [] calIntake = new string[3]; 
calIntake [0] = Console.ReadLine(); 
calIntake[1] = Console.ReadLine(); 
calIntake[2] = Console.ReadLine(); 

我曾嘗試:

short[] calIntakeNum = Array.ConvertAll(calIntake.split(','), Short.Parse); 

我得到這個錯誤時說:「類型參數的方法「System.Array.ConvertAll(TInput [] ,System.Converter)」不能從使用推斷嘗試顯式指定類型參數

然後我嘗試:。

short[] calIntakeNum = Array.ConvertAll(calIntake.split(','), ne Converter<string, short>(Short.Parse)); 

和我得到相同的錯誤。那麼我怎樣才能將一個基於用戶輸入的字符串數組轉換成一個短陣列呢?

+0

這是您的確切代碼? 'string []'沒有'split'方法。 –

+0

您能否澄清一下您期望'calIntake.split(',')'做什麼?此外,爲什麼你試圖這樣一個奇怪的代碼時,你可以假設閱讀文章顯示了很多簡單的代碼[Array.ConvertAll](https://msdn.microsoft.com/en-us/library/exc45z53(v = vs.110 )的.aspx)? –

回答

2

您只需通過short.Parse方法投射字符串:

short[] calIntakeNum = calIntake.Select(short.Parse).ToArray(); 
+0

這是正確的,儘管他不應該使用數組來完成任何事情。如果他的教練想要陣列,他的教練應該在麥當勞找工作。 –

+0

list.Add(item)不會因爲索引超出範圍而崩潰。靜態初始化時,數組是適當的(因爲OP應該是)。否則,通用列表更強大並且可維護。我知道有一個主張總是寫出最糟糕的代碼的學校。我不是粉絲。你專業編寫代碼有多久了? –

+0

我知道你不明白。我說「泛型列表」來區分它與System.Collections.List,它也稱爲列表,而不是通用的。 [數組不是泛型](http://stackoverflow.com/a/15561100/424129)。您的經驗不足與您不知道爲什麼固定大小的容器可能會成爲問題有很大關係。如果OP稍後需要在索引1處插入另一個項目,該怎麼辦?他必須添加一行新的代碼並更改其他三個代碼。數組寫更多的工作,更多的工作來改變,寫和修改更容易出錯。多次調用list.Add()是可取的。 –

1

calIntake已經是一個數組,你不需要Split它。有在C#中沒有類型Short,有shortInt16

short[] calIntakeNum = Array.ConvertAll(calIntake, short.Parse); 
0

你嘗試失敗,因爲你打過電話上不存在的類的方法,因爲Short.Parse不存在第二種方法。去除你的第一個參數.split(',')ConvertAll,改變Short.Parseshort.Parse將解決這個問題:

short[] calIntakeNum = Array.ConvertAll(calIntake, new Converter<string, short>(short.Parse)); 

如果有可能爲你的程序,你可以聲明您的數組爲short[]原來,和Console.ReadLine()呼籲short.Parse

short[] shortArray = new short[3]; 
shortArray[0] = short.Parse(Console.ReadLine()); 
相關問題