Java 检查数组时出现Nullpointerexception

Java 检查数组时出现Nullpointerexception,java,arrays,nullpointerexception,2d,Java,Arrays,Nullpointerexception,2d,我对java非常陌生,但我必须初始化一个大小为n的2d数组,在本例中为10。 初始化之后,我想检查对角线条目是否为false,以及是否将其设置为true。在我想要返回i的值之后 这是我的代码: 首先,初始化阵列: public static void init(int n) { boolean friendship[][] = new boolean[n][n];} 在我试过这个之后: public static int addUser(String name) {

我对java非常陌生,但我必须初始化一个大小为n的2d数组,在本例中为10。 初始化之后,我想检查对角线条目是否为false,以及是否将其设置为true。在我想要返回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;
    }
我能做些什么来解决这个问题


PS:很抱歉英文和格式不好。

我假设您有一个名为
友谊
静态
字段。用这种方法

public static void init(int n) {
     boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地
友谊
变量,即
静态
成员。因此,
静态
友谊
字段保持为
,当您尝试在
添加用户
中访问它时,您会得到一个
空点异常

使用

再次假设你有

public static boolean[][] friendship;

在这个

if ( friendship[i][i] = false) {
实际上,您正在将
友谊[i][i]
设置为
false
。相等运算符是
==


这就是我对你们班的看法

public class Test {
    /* visibility identifier doesn't matter */ static boolean[][] friendship;

    public static void init(int n) {
        // this is a different variable from the member declared above
        // it is a local variable
        boolean friendship[][] = new boolean[n][n]; 
    }

    public static int addUser(String username) {
        int id=0;
        for ( int i=0;i<friendship.length;i++) {
            if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
                friendship[i][i] = true;
                id = i;
            }
        }
        return id;
    }
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;

对于(inti=0;i我假设在这个方法中有一个名为
Friendly
static
字段

public static void init(int n) {
     boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地
友谊
变量,即
静态
成员。因此,
静态
友谊
字段保持为
,当您尝试在
添加用户
中访问它时,您会得到一个
空点异常

使用

再次假设你有

public static boolean[][] friendship;

在这个

if ( friendship[i][i] = false) {
实际上,您正在将
友谊[i][i]
设置为
false
。相等运算符为
=


这就是我对你们班的看法

public class Test {
    /* visibility identifier doesn't matter */ static boolean[][] friendship;

    public static void init(int n) {
        // this is a different variable from the member declared above
        // it is a local variable
        boolean friendship[][] = new boolean[n][n]; 
    }

    public static int addUser(String username) {
        int id=0;
        for ( int i=0;i<friendship.length;i++) {
            if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
                friendship[i][i] = true;
                id = i;
            }
        }
        return id;
    }
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;

对于(inti=0;i我假设在这个方法中有一个名为
Friendly
static
字段

public static void init(int n) {
     boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地
友谊
变量,即
静态
成员。因此,
静态
友谊
字段保持为
,当您尝试在
添加用户
中访问它时,您会得到一个
空点异常

使用

再次假设你有

public static boolean[][] friendship;

在这个

if ( friendship[i][i] = false) {
实际上,您正在将
友谊[i][i]
设置为
false
。相等运算符为
=


这就是我对你们班的看法

public class Test {
    /* visibility identifier doesn't matter */ static boolean[][] friendship;

    public static void init(int n) {
        // this is a different variable from the member declared above
        // it is a local variable
        boolean friendship[][] = new boolean[n][n]; 
    }

    public static int addUser(String username) {
        int id=0;
        for ( int i=0;i<friendship.length;i++) {
            if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
                friendship[i][i] = true;
                id = i;
            }
        }
        return id;
    }
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;

对于(inti=0;i我假设在这个方法中有一个名为
Friendly
static
字段

public static void init(int n) {
     boolean friendship[][] = new boolean[n][n];
}
您正在声明一个新的本地
友谊
变量,即
静态
成员。因此,
静态
友谊
字段保持为
,当您尝试在
添加用户
中访问它时,您会得到一个
空点异常

使用

再次假设你有

public static boolean[][] friendship;

在这个

if ( friendship[i][i] = false) {
实际上,您正在将
友谊[i][i]
设置为
false
。相等运算符为
=


这就是我对你们班的看法

public class Test {
    /* visibility identifier doesn't matter */ static boolean[][] friendship;

    public static void init(int n) {
        // this is a different variable from the member declared above
        // it is a local variable
        boolean friendship[][] = new boolean[n][n]; 
    }

    public static int addUser(String username) {
        int id=0;
        for ( int i=0;i<friendship.length;i++) {
            if ( friendship[i][i] = false) { // referring to static field, not the local variable in init()
                friendship[i][i] = true;
                id = i;
            }
        }
        return id;
    }
}
公共类测试{
/*可见性标识符无关紧要*/静态布尔[][]友谊;
公共静态void init(int n){
//这是与上面声明的成员不同的变量
//它是一个局部变量
布尔友谊[][]=新布尔[n][n];
}
公共静态int addUser(字符串用户名){
int id=0;


对于(inti=0;iWhy您为什么要费心检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,使用==代替=来比较事物)为什么您费心检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,使用==代替=来比较事物)为什么你要费心去检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,用==代替=来比较事物)为什么你要费心去检查它们是否为假?为什么不直接将它们设置为真?(顺便说一下,用==代替=来比较事物)OP没有静态字段,什么是静态初始值?它是静态初始值设定项吗?为什么这里需要这个静态值?@nikpon使用
static
这里只是一个设计选择。这不是真正的问题。问题是OP有两个同名的变量,一个
static
和一个local。local一个隐藏着
static
one。你在哪里看到这个设计的?你对静态的看法是绝对错误的。@nikpon你可以去掉
静态的
,如果OP有一个名为
友谊
的实例字段,那么OP也会有同样的问题。不,这绝对没有必要,同样的问题不是问题,你没有什么需要改进的OP问题OP没有静态字段,什么是stat