0

我想知道在 java 中是否有一种方法,当迭代数组并将值放在某些索引中时,可以跳过越界异常并转到下一项。

例如,

           for (int x = 0; x <= array.length; x++) 
           {
               for (int y = 0; y <= array[0].length; x++)
               {
                   // code that determines where to put things and in what indices

                   //if this index is out of the array bounds, I want to forget about it and keep going through the loops

               }

               }

           }
4

4 回答 4

3

我想知道java中是否有一种方法,当迭代数组并将值放在某些索引中时,可以跳过越界异常并转到下一项

如果索引在某个索引处超出范围,那么下一个索引肯定也超出范围。让您的代码正常工作。

 for (int x = 0; x <array.length; x++) 
           {
               for (int y = 0; y <array[x].length; y++)
               {

数组索引从零开始。IE

如果数组的长度为 n,则数组的最后一个索引为 ne n-1

于 2013-02-25T18:46:58.467 回答
0

Arrays索引从0开始。

因此,例如,当您Array的长度为100时,索引为:

  0   1   2   3   4   5  ..... 99   (total size of 100 of course)
  ^   ^   ^   ^   ^   ^        ^
  |   |   |   |   |   |        |
first                         last

当你这样做时,array.length你实际上得到了100,但你需要迭代直到99

所以,替换<=<

于 2013-02-25T18:52:11.393 回答
0

问题意味着您在无效的数组上使用了索引。这可能是负数,因为所有数组都从 0 开始。如果您的数组有N 个项目,并且您将尝试获取索引为 N 或更高的项目,您也会得到此异常。只有可用的索引是从0 到 N - 1,其中 0 指向第一项,N - 1 指向最后一项。所以很明显,当您的索引超出数组限制时,下一个索引肯定会超出范围。因此,您可以迭代索引直到它超出界限并在那里停止迭代以避免该异常。

于 2013-02-25T18:53:54.123 回答
0

正确的。首先,嵌套循环的更新部分应该是 y++。不是 x++。该代码将无限循环。

其次,您可以将循环包装在 try-catch 中,这将捕获异常,但不建议只忽略异常。为什么不设计您的代码,使其不会引发异常?

于 2013-02-25T18:48:49.997 回答