Java:NullPointerException 二维对象数组甚至数组已初始化并填充

标签 java arrays nullpointerexception

在 forest() 方法中,我创建了一个二维对象数组,然后填充它。我确定数组已填充,因为我可以在方法 forest() 的类 Forest 中以及方法 setTree() 的类 Tree 中显示数组的内容,如下所示。不幸的是,我无法通过方法 showContentOfTree() 或其他地方获取此内容。出现错误:NullPointerException

问题是为什么会这样,我应该改变什么?

public class Forest extends JPanel {
    private LoadImage loadImage;
    private Tree[][] tree;

    public forest(){
        setLayout(null);
        loadImage = new LoadImage();
        loadImage.Image();
        Tree[][] tree = new Tree[16][16];
        for (int y = 0; y < 16; y++){
            for (int x = 0; x < 16; x++){
                tree[x][y] = new Tree();
                tree[x][y].setTree(loadImage.loadForest(x,y));
                System.out.println("Tree species " + tree[x][y].treeSpecies);
                //here System displays loaded treeSpecies successfully
            }
        }
        showContentOfTree();
    }
    public void showContentOfTree(){
    for (int y = 0; y < 16; y++){
        for (int x = 0; x < 16; x++){
            System.out.println("Tree species" + tree[x][y].treeSpecies);
                            //here System DOES NOT displays loaded treeSpecies:
                            //Error apears: java.lang.NullPointerException
                            //at Forest.showContentOfTree(Forest.java:31)
        }
    }
}

public class Tree{
    String treeSpecies;
    public void setTree(String treeSpecies){
        this.treeSpecies = treeSpecies;
        System.out.println("Tree species " + treeSpecies);
                //here System also displays loaded treeSpecies successfully
    }
}

堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException at Forest.showContentOfTree(Forest.java:31) 
at Forest.<init>(Forest.java:26) 
at Okno.<init>(Okno.java:19)

在 Glowny.main(Glowny.java:10)

最佳答案

你是shadowing forest 方法中的 tree 变量。

public forest(){
        setLayout(null);
        loadImage = new LoadImage();
        loadImage.Image();
        tree = new Tree[16][16]; //<-- remove Tree[][] 

关于Java:NullPointerException 二维对象数组甚至数组已初始化并填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043139/

相关文章:

PHP、MYSQL 组合来自 mysqli_fetch_array 的数组

Java int 数组到 StringBuilder

java - 在 Java 中创建一副纸牌时出现 ArrayIndexOutOfBoundsException

java - 映射中的空检查获取空指针异常

java.lang.NullPointerException Webdriver 失败

java - 没有 StackTrace 的 Java 中的 NullPointerException

java - 在运行时创建@RestController

java - 简单的 Java 程序奇怪的输出

java - 在不创建对象的情况下访问外部类变量是否安全?

java - 将 Android 应用程序上传到市场错误