检查数组时出现Nullpointerexception

时间:2013-11-17 16:56:52

标签: java arrays nullpointerexception 2d

我对java很新,但我必须初始化一个2d数组大小n,在这个例子中为10。 初始化后,我想检查对角线条目是否为假,如果设置为真。在我想要返回i的值之后。

这是我编码的:

首先初始化数组:

public static void init(int n) {
        boolean friendship[][] = new boolean[n][n];}

在我试过这个之后:

public static int addUser(String name) {
        int id=0;
        for ( int i=0;i<friendship.length;i++) {
            if ( friendship[i][i] = false) {
                friendship[i][i] = true;
                id = i;
            }
        }
        return id;
    }

可悲的是它的投掷:

Exception in thread "main" java.lang.NullPointerException
    at x.SocialNetwork.addUser(SocialNetwork.java:18)
    at x.SocialNetwork.main(SocialNetwork.java:53)

我该怎么做才能解决这个问题?

PS:抱歉英语和格式不好。

1 个答案:

答案 0 :(得分:3)

我假设您有一个名为static的{​​{1}}字段。在这个方法

friendship

您要声明一个新的本地public static void init(int n) { boolean friendship[][] = new boolean[n][n]; } 变量,即friendship成员shadowing。因此,static static字段仍为friendship,当您尝试在null中访问该字段时,您会获得addUser

使用

NullPointerException

再次假设您有类似

的内容
public static void init(int n) {
     friendship = new boolean[n][n];
}

在此

public static boolean[][] friendship;

您实际上是将if ( friendship[i][i] = false) { 设置为friendship[i][i]。等于运算符是false


这就是我看到你班级的方式

==