Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维数组的空指针异常_Java_Multidimensional Array_2d - Fatal编程技术网

Java 二维数组的空指针异常

Java 二维数组的空指针异常,java,multidimensional-array,2d,Java,Multidimensional Array,2d,可能重复: 其他标题类似的问题的答案都是,它们的数据需要初始化,我已经初始化了,但仍然得到一个空指针异常。谁能告诉我为什么 public class grid{ private Node [][] board = new Node [9][9]; public boolean add(int x, int y, char label) { boolean valid=true; System.out.println("enter add"); if(labe

可能重复:

其他标题类似的问题的答案都是,它们的数据需要初始化,我已经初始化了,但仍然得到一个空指针异常。谁能告诉我为什么

    public class grid{
private Node [][] board = new Node [9][9];

public boolean add(int x, int y, char label) {
    boolean valid=true;

    System.out.println("enter add");
    if(label==' '){
        System.out.println("enter if 1");
        board[x][y].setValue('0');
    }
    else if(label<='9'&&label>'0'){
        System.out.println("enter if 2");
        board[x][y].setValue(label);
    }
    else{
        valid=false;
    }
    if(valid)
        System.out.println("valid");
    return valid;
}
编辑:我想出来了,如果其他人有同样的问题,这似乎可以解决它

    if(label==' '){
        System.out.println("enter if 1");
        board[x][y]= new Node(' ');
    }
    else if(label<='9'&&label>'0'){
        System.out.println("enter if 2");
        board[x][y]= new Node(label);
    }
if(标签==''){
System.out.println(“如果输入1”);
板[x][y]=新节点(“”);
}
else if(标签“0”){
System.out.println(“如果输入2”);
板[x][y]=新节点(标签);
}

数组不会初始化数组的元素。因此,每个
board[x][y]
最初都是
null

哦,这是在做什么?专用节点[][]板=新节点[9][9]@我不是你想的那样。请看我链接到的这个问题的副本,或者关于数组的教程,好的,我将使用定向输入,所以在给出一个文件之前,我不知道这些值。我当时对如何初始化它有点困惑。不管我怎么想,我会更新opchar数组。你的char数组应该是
public char[]possibleValues={'1','2','3','4','5','6','7','8','9'你的代码甚至可能不复杂。@smit-它会编译得很好,只是不会做他认为的事情。java中的
char
只是一个16位有符号整数。使用单引号从默认字符映射中获取给定字符的值。(例如,如果您使用UTF-8,则“1”==49)@BrianRoach+1是的,您是对的。。
    if(label==' '){
        System.out.println("enter if 1");
        board[x][y]= new Node(' ');
    }
    else if(label<='9'&&label>'0'){
        System.out.println("enter if 2");
        board[x][y]= new Node(label);
    }