2 kaseyhebe kaseyhebe 于 2014.12.18 14:59 提问

大神們 幫忙看下這個數組越界異常...

public class Example implements EntryPoint {

AbsolutePanel absolutePanel =new AbsolutePanel();
Button reset = new Button("Reset");
Button[][] buttons = new Button[20][20];
Grid grid = new Grid();

public Example(){
    absolutePanel.setSize("400","400");
    absolutePanel.add(reset);

    grid = new Grid(20,20);

    for (int i = 0; i < buttons.length; i++) {
        for (int j = 0; j < buttons.length; j++) {
            buttons[i][j] = new Button();
            grid.setWidget(20,20,buttons[i][j]);

        }

    }
 absolutePanel.add(grid);
}

public void onModuleLoad() {

// startGame(9,9,10);
RootPanel.get().add(absolutePanel);

4个回答

bdmh
bdmh   Ds   Rxr 2014.12.18 15:18

Button[][] buttons = new Button[20][20];
这样buttons.length=400,你for循环中肯定越界了

save4me
save4me 在eclipse里面,Button[][] buttons = new Button[20][20]中,buttons.length就是等于20
大约 3 年之前 回复
kaseyhebe
kaseyhebe 謝謝了, 可是怎麼改呢
大约 3 年之前 回复
kaseyhebe
kaseyhebe   2014.12.18 15:20

如何 修改呀 我要做一個 掃雷的遊戲.. 應該怎麼改呢 謝謝你了

save4me
save4me   Ds   Rxr 2014.12.18 15:27

第二个for循环使用for (int j = 0; j < buttons[i].length; j++) {

save4me
save4me 你的这个问题好像不是buttons越界的问题,因为碰巧你的二维数组的两个维度长度都是20,在ECLIPSE里面按你的方式定义一个二维数组,可以正常执行的。你看看报错数组越界是代码里面的第几行,那一行是什么代码。
大约 3 年之前 回复
kaseyhebe
kaseyhebe 不過還是謝謝你了
大约 3 年之前 回复
kaseyhebe
kaseyhebe 還是不對呀, 同樣的異常被拋出
大约 3 年之前 回复
BlackMonkey
BlackMonkey   2014.12.18 15:59
private static final int BTN_COLS = 20;
private static final int BTN_ROWS = 20;

Button[][] buttons = new Button[BTN_ROWS][BTN_COLS];
...
    for (int i = 0; i < BTN_ROWS; i++) {
        for (int j = 0; j < BTN_COLS; j++) {

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!