双静态数组引发异常

时间:2014-02-28 04:38:45

标签: java image static-array

我正在为eclipse中的班级做一个游戏任务。我收到了一个错误:

的ClassNotFoundException(抛出);

停在

public static Jewel[][] grid = new Jewel[8][8];

在运行调试器时,它似乎没有进入新的Jewel [8] [8]

我认为宝石级别在同一个包装中,我无法弄清楚为什么它无法找到这个课程。我假设它正在尝试生成一个不同的类,或者在编译时没有生成类的静态部分。欢迎提出任何其他意见;

这是整个班级,位于

package game;

import java.awt.Dimension; 
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JPanel;

public class PlayArea extends JPanel {

    private static final long serialVersionUID = -9165676032115582474L;

    public static Jewel[][] grid = new Jewel[8][8];

    public PlayArea(){

        this.setPreferredSize(new Dimension(Common.jewelWidth*Common.rowColLength,Common.jewelWidth*Common.rowColLength));
        this.setLayout(null);

        for(int i = 0; i < Common.rowColLength; i++){
            for (int j = 0; j < Common.rowColLength; j++){
                grid[i][j] = new Jewel();
            }
        }
    }

    @Override
    public void paintComponent(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        for (int i = 0; i <Common.rowColLength;i++){
            for(int j = 0; j < Common.rowColLength; j++){
                grid[i][j].drawJewel(i, j, g2);
            }
        }
        Jewel grid2 = new Jewel();
        grid2.drawJewel(1, 1, g2);
    }
}

2 个答案:

答案 0 :(得分:-1)

public static Jewel[][] grid = new Jewel[8][8];

这不会创建Jewel类的实例,而只是引用它。您必须显式迭代2D数组并创建新的Jewel实例。

grid[i][j] = new Jewel();

如果你的默认构造函数中有一些代码,那么它就会进入构造函数。

答案 1 :(得分:-1)

While running the debugger it doesnt seem to enter the new Jewel[8][8].

它不会进入宝石[8] [8],因为数组索引从0开始。从0-7(计数= 8)