簡體   English   中英

嘗試int.parse多數組字符串

[英]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
}

Array.GetLength方法

獲取一個32位整數,表示Array指定維度中的元素數。

另外值得一提的是int.Parse可能拋出一個FormatException ,考慮int.TryParse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM