Encountered java.lang.NullPointerException.

huangapple go评论76阅读模式
英文:

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

huangapple
  • 本文由 发表于 2020年10月8日 22:56:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/64265243.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定