英文:
java.lang.NullPointerException encountered
问题
我已经看到了许多关于上述Java错误的答案,然而其中大多数都在说明错误是什么,我找不到纠正它的方法。
这是我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];
// 基本情况
strg[m][n].val = 0;
}
我在写下 strg[m][n].val = 0;
这一行时遇到错误。
我已经创建了一个名为 Node 的类,如下所示:
// DP 矩阵的元素类型是 Node
public class Node {
int val;
ArrayList<Pair<Integer>> arrows = new ArrayList<Pair<Integer>>();
}
// Pair 类
public static class Pair<T> {
T p1;
T p2;
public Pair(T p1, T p2) {
this.p1 = p1;
this.p2 = p2;
}
}
你能告诉我出了什么问题吗?为什么会指向 NULL?我应该怎么做才能纠正这个问题?
<details>
<summary>英文:</summary>
I have seen many answers with respect to the above error in Java, however most of them are telling what the error is, and I cannot find a way to correct it.
This is a snippet of my code in 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;
}
I get error at the line where I write strg[m][n].val =0;
I have created a Node class as follows:
// 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;
}
}
Can you tell me what is going wrong? Why is NULL being pointed? What can I do to correct this?
</details>
# 答案1
**得分**: 2
你创建了一个由空节点组成的矩阵。
```java
strg[m][n] = new Node();
strg[m][n].val = 0; // 现在有一个节点,不再有空指针异常。
当然更好的方式是:
Node node = new Node();
node.val = 0;
strg[m][n] = node;
这样一个新的节点实际上已经有了其val字段的值为0。
当然,所有的矩阵节点必须被创建。
在Java中:
int[] v = new int[10]; // 全部为 0。
boolean[] v = new boolean[10]; // 全部为 false。
String[] v = new String[10]; // 全部为 null。
double[] v = new double[10]; // 全部为 0.0。
英文:
You created a matrix of null Nodes.
strg[m][n] = new Node();
strg[m][n].val = 0; // Now there is a Node, no longer NPE.
Of course nicer is:
Node node = new Node();
node.val = 0;
strg[m][n] = node;
where a new Node actually has its val field already 0.
Of course all matrix nodes must be created.
In 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.
答案2
得分: 1
````strg````为空;它的所有值都是````null````。您需要创建一个````新节点````。
当您在Java中创建一个非基本类型的数组时,它还不包含任何实际对象--每个项都是````null````。
英文:
strg
is empty; all its values are null
. You need to create a new Node
.
When you created an array of non-primitives in java, it doesn't contain any actual objects yet--every item is null
.
答案3
得分: -1
NPE是在你对空对象调用方法时发生的... 使用调试器并查看它在哪里为空。
英文:
NPE is when you call a methode on a null object ... use the debbuger and see where he is null
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论