我对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:抱歉英语和格式不好。
答案 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
。
这就是我看到你班级的方式
==