java applet - 数组检查

时间:2010-06-02 05:07:34

标签: java arrays applet tile

好的,所以我的代码在这里:http://www.so.pastebin.com/m7V8rQ2n

我想知道的......让我说我有一张图片,我可以在瓷砖上重绘...有没有办法检查未来的瓷砖,所以我不会超出我已定义的瓷砖地图的范围?

就好像我在地图的边缘......它不会让我经过它吗?

感谢。

1 个答案:

答案 0 :(得分:3)

一般来说,只需确保索引在绑定范围内即可阻止ArrayIndexOutOfBoundsException

  

JLS 10.4 Array Access

     

所有数组都是0原点。长度为n的数组可以由整数0索引到n-1

因此,这样的简单检查非常典型:

if (i >= 0 && i < arr.length) {
    System.out.println(arr[i]);
}

除非在检查和访问之间重新分配arr等令人讨厌的内容,否则上述代码将从不抛出ArrayIndexOutOfBoundsException


2D阵列“板”

通常,您可以更具体,例如当你有一个存储在二维数组中的矩形“板”(或者更确切地说,是Java中的数组数组)。

final int M = 10;  // height, i.e. number of rows
final int N = 8;   // width, i.e. number of columns
final int[][] board = new int[M][N];

然后您可以使用以下方法:

boolean isInBound(int r, int c) {
    return (r >= 0) && (r < M) && (c >= 0) && (c < N);
}

绑定检查更容易阅读和写入,因为我们知道我们有一个 MxN 板。如果isInBound(r, c),则board[r][c]从不投掷ArrayIndexOutOfBoundsException