【问题标题】:trying to int.parse multi array string试图 int.parse 多数组字符串
【发布时间】:2012-08-24 02:09:36
【问题描述】:

我正在这样做:

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
}

我收到一条错误消息,说“索引范围是数组的限制”(或类似的东西,错误是丹麦语)。

【问题讨论】:

  • WOW 有很多人为此发布了相同的错误答案。很好的问题;-)
  • 我希望这个问题获得“热门问题”徽章。它绝对值得拥有。非常有趣的答案。

标签: c# arrays for-loop multidimensional-array


【解决方案1】:

有两个问题:

  • string1.Length 将返回 6,因为这是数组的 总长度
  • 您使用 &lt;= 进行比较,因此它实际上会尝试迭代 7 次。

您的for 循环应该是:

for (int i = 0; i < string1.GetLength(0); i++)

此处对GetLength(0) 的调用将返回3,作为“第一”维度的大小。对 GetLength(1) 的调用返回 2,因为第二个维度的大小为 2。(不过,您不需要那个,因为您基本上是在硬编码您想要每个“行”的第二个“列”的知识.)

有关详细信息,请参阅Array.GetLength() 的文档。

【讨论】:

    【解决方案2】:

    您的数组边界在循环中不正确:

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

    应改为:

    for(int i = 0; i < string1.GetLength(0); i++) 
    

    有两件事是错误的:&lt;=&lt; 意味着你走得太远了,.Length 返回数组的总长度 (6) 而 GetLength(0) 返回第一个维度的长度(3)。

    【讨论】:

      【解决方案3】:

      您已经有了正确的答案,我会更新我的答案以更正它。正确的迭代应该是

              for (int i = 0; i < string1.GetLength(0); i++)
              {
                  b = int.Parse(string1[i, 1]);
              }
      

      因为i代表第一个维度的长度,固定的1会返回数字,也就是第二个元素。

      对不起,我首先给出了错误的答案。

      【讨论】:

      • 不起作用,因为它一个二维数组。发帖前检查!
      【解决方案4】:

      i &lt;= string1.Length 更改为i &lt; string1.Length

      【讨论】:

        【解决方案5】:

        改成

        for(int i = 0; i <= string1.GetLength(0); i++) 
        { 
        b = Int32.Parse(string1[i][0]);
        }
        

        您的代码引用索引 1 而不是 0,这会导致称为 Array out of bound 的异常

        【讨论】:

          【解决方案6】:

          试试这个:

          for(int i = 0; i < string1.GetLength(0) ; i++)
          {
               b = int.parse(string1[i, 0]); // Error occurs here
          }
          

          Array.GetLength Method

          获取一个 32 位整数,表示 Array 的指定维度中的元素个数。

          【讨论】:

            【解决方案7】:

            另外值得一提的是int.Parse 可能会抛出FormatException,考虑int.TryParse

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-11
              • 2019-08-09
              • 2015-12-04
              • 1970-01-01
              • 2014-04-18
              相关资源
              最近更新 更多