0

次のような状況があります。

final int I  = 10;
final int MU = 100;
final int P  = 100;

int[][] a = new int[I][MU];
int[][] b = new int[I][P];

for(int i = 0; i < I; i++) {
  for(int mu = 0; mu < MU; mu++) {
    for(int p = 0; p < P; p++) {
      a[i][mu] = ... // something
      b[i][p]  = ... // something
    }
  }
}

ご覧のとおり、次元が同じでインデックスが異なる複数の配列を使用しています。このコードでは、 の範囲が よりも大きいArrayIndexOutOfBoundsExceptionため、次の間違いにより が発生する可能性があります。mui

a[mu][i] = ...

原則として、このエラーをキャッチできます。ただし、次のエラーはキャッチするのがはるかに困難です。

b[i][mu] = ...

muと同じ範囲を持っているので、ここでは実行時例外はありませんp。ただし、このエラーはコード内でセマンティックな問題を引き起こします。

最後に、私の質問: 正しいインデックス (およびこの場合) でaのみ配列にアクセスできるようにこれらの配列をプログラムする最良の方法は何ですか?imu

ありがとう!

4

1 に答える 1