[英]trying to int.parse multi array string
我這樣做:
string[,] string1 = {{"one", "0"},{"Two", "5"},{"Three","1"}};
int b = 0;
for(int i = 0; i <= string1.Length; i++)
{
b = int.Parse(string1[i, 1]); // Error occurs here
}
我得到一個錯誤說“索引范圍數組的限制”(或類似的東西,錯誤是丹麥語)。
有兩個問題:
string1.Length
將返回6,因為這是數組的總長度 <=
進行比較,因此它實際上會嘗試迭代7次。 你的for
循環應該是:
for (int i = 0; i < string1.GetLength(0); i++)
這里對GetLength(0)
的調用將返回3,作為“第一”維度的大小。 對GetLength(1)
調用返回2,因為第二個維度的大小為2.(你不需要那個,因為你基本上硬編碼你想要每個“行”的第二個“列”的知識”。)
有關更多詳細信息,請參閱Array.GetLength()
的文檔。
循環中的數組邊界不正確:
for(int i = 0; i <= string1.Length; i++)
應該讀:
for(int i = 0; i < string1.GetLength(0); i++)
有兩件事是錯誤的: <=
versus <
意味着你將一個項目GetLength(0)
得太遠,而.Length
返回數組的總長度(6)與GetLength(0)
返回第一個維度(3)的長度。
你已經有了正確的答案,我會更新我的,以便糾正它。 要正確的迭代應該是
for (int i = 0; i < string1.GetLength(0); i++)
{
b = int.Parse(string1[i, 1]);
}
因為i
代表第一個維度的長度,固定1
將返回數字,這是第二個元素。
對不起,我先給出了錯誤的答案。
改成
for(int i = 0; i <= string1.GetLength(0); i++)
{
b = Int32.Parse(string1[i][0]);
}
您的代碼引用索引1而不是0引起異常,稱為Array out of bound
將i <= string1.Length
更改為i < string1.Length
。
嘗試這個:
for(int i = 0; i < string1.GetLength(0) ; i++)
{
b = int.parse(string1[i, 0]); // Error occurs here
}
獲取一個32位整數,表示Array指定維度中的元素數。
另外值得一提的是int.Parse
可能拋出一個FormatException
,考慮int.TryParse
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.