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にあるかどうか疑問に思っていました

indexが特定のインデックスで範囲外にある場合、次のインデックスも確実に範囲外になります。あなたのコードが機能するためには、そうするだけです。

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

配列インデックスはゼロ ベースです。すなわち

配列の長さが n の場合、配列の最後のインデックスは ne n-1 になります。

于 2013-02-25T18:46:58.467 に答える
0

問題は、無効な配列のインデックスを使用したことを意味します。すべての配列が0から始まるため、負の数になる可能性があります。配列にN個のアイテムがあり、インデックスN以上のアイテムを取得しようとすると、この例外も発生します。使用可能なインデックスは0からN-1までで、0は最初の項目を指し、N-1は最後の項目を指します。したがって、インデックスが配列の制限を超えた場合、次のインデックスは確実に範囲外になります。したがって、インデックスが範囲外になるまでインデックスを繰り返し、そこで繰り返しを停止して、その例外を回避できます。

于 2013-02-25T18:53:54.123 に答える
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

右。まず最初に、ネストされたループの update セクションに y++ を指定する必要があります。x++ ではありません。そのコードは無限に循環するだけです。

次に、ループを try-catch でラップすると、例外がキャッチされますが、例外を単に無視することはお勧めしません。例外をスローしないようにコードを設計してみませんか?

于 2013-02-25T18:48:49.997 に答える