【问题标题】:java applet - array checkingjava applet - 数组检查
【发布时间】:2010-06-02 05:07:34
【问题描述】:

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

我想知道...假设我有一张可以在图块上重绘的图像...有没有办法检查未来的图块,这样我就不会超出我已经定义的图块地图的范围?

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

谢谢。

【问题讨论】:

  • 信息不足。告诉我们更多正在发生的事情以及您想要做什么。具有描述性。

标签: java arrays applet tile


【解决方案1】:

一般来说,防止ArrayIndexOutOfBoundsException 可以通过简单地确保索引在边界内来完成。

JLS 10.4 Array Access

所有数组都是 0-origin。长度为n 的数组可以通过整数0n-1 进行索引。

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

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

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


二维数组“板”

通常,您可以更加具体,例如当您将矩形“板”存储在二维数组(或者更确切地说,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-03-25
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多