Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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.lang.NullPointerException_Java_Nullpointerexception - Fatal编程技术网

遇到java.lang.NullPointerException

遇到java.lang.NullPointerException,java,nullpointerexception,Java,Nullpointerexception,我在Java中看到了许多关于上述错误的答案,但是大多数答案都在说明错误是什么,我找不到纠正错误的方法 这是我的Java代码片段: public static void optimalAlignmentScoreBU(String r, String s, int matchScore, int transition, int transversion, int indel) { int m = r.length(); int n = s.length();

我在Java中看到了许多关于上述错误的答案,但是大多数答案都在说明错误是什么,我找不到纠正错误的方法

这是我的Java代码片段:

public static void optimalAlignmentScoreBU(String r, String s, int matchScore, int transition, int transversion, int indel) {

        int m = r.length();
        int n = s.length();
        Node[][] strg = new Node[m + 1][n + 1];

        // base cases
        strg[m][n].val = 0;
}
我在写入strg[m][n]的行中出错。val=0; 我创建了一个节点类,如下所示:

// ELEMENT OF DP MATRIX IS OF TYPE NODE
    public class Node {
        int val;
        ArrayList<Pair<Integer>> arrows = new ArrayList<Pair<Integer>>();
    }

// PAIR CLASS
public static class Pair<T> {
        T p1;
        T p2;

        public Pair(T p1, T p2) {
            this.p1 = p1;
            this.p2 = p2;
        }
    }
//DP矩阵的元素的类型为NODE
公共类节点{
int-val;
ArrayList箭头=新的ArrayList();
}
//结对班
公共静态类对{
tp1;
tp2;
公共对(tp1,tp2){
这是1.p1=p1;
这是p2=p2;
}
}

你能告诉我出了什么问题吗?为什么要指出空值?如何更正此问题?

strg
为空;其所有值均为
null
。您需要创建一个
新节点


当您在java中创建一个非原语数组时,它还没有包含任何实际的对象——当您在一个空对象上调用methode时,每个项都是
null

NPE。。。使用debbuger并查看他在哪里为null

您创建了一个null节点矩阵

    strg[m][n] = new Node();
    strg[m][n].val = 0; // Now there is a Node, no longer NPE.
当然更好的是:

    Node node = new Node();
    node.val = 0;
    strg[m][n] = node;
其中,新节点的val字段实际上已为0

当然,必须创建所有矩阵节点

在java中:

int[] v = new int[10]; // All 0.
boolean[] v = new boolean[10]; // All false.
String[] v = new String[10]; // All null.
double[] v = new double[10];  // All 0.0.

strg[m][n]
为空
strg[m][n]
为空,因此您无法访问其
.val
字段。数组是用空值初始化的,您需要创建一个节点放在该索引处,该节点就是您可以调用的
.val
打开的节点。这是否回答了您的问题?你好谢谢那么我应该如何创建矩阵,比如什么类型的矩阵?现在我已经创建了like->Node[]strg=new Node[m+1][n+1];这应该改变吗?这很好,但是对于(inti=0;i。不太好。因为
strg[i][j]
为空。所以这是一个初始化矩阵中所有单元格的好方法?如果您使用all。根据具体情况,有时会分配新的节点对象,而旧值与此无关。您的消息不适合回答,而更适合注释。