实例化对象时的NullPointerException
这是一个家庭作业,我希望得到任何答案 我试图弄明白为什么我调用equals方法时总是得到一个NullPointerException。如果我没有弄错的话,我已经实例化了这个对象,但是它仍然不起作用实例化对象时的NullPointerException,nullpointerexception,Nullpointerexception,这是一个家庭作业,我希望得到任何答案 我试图弄明白为什么我调用equals方法时总是得到一个NullPointerException。如果我没有弄错的话,我已经实例化了这个对象,但是它仍然不起作用 Exception in thread "main" 8 java.lang.NullPointerException at labbfyra.TextBuilder.equals(TextBuilder.java:69) at labbfyra.SkapaOrd.main(Skapa
Exception in thread "main" 8
java.lang.NullPointerException
at labbfyra.TextBuilder.equals(TextBuilder.java:69)
at labbfyra.SkapaOrd.main(SkapaOrd.java:17)
这是stacktrace吗
public class TextBuilder {
private static class Node{
public char inChar;
public Node next;
public Node(char c, Node nästa){
inChar = c;
next = nästa;
}
}
private Node first = null;
private Node last = null;
public TextBuilder(){
first = null;
last = null;
}
public void append(String s){
int x = s.length();
for(int i=0;i<x;i++){
Node n = new Node(s.charAt(i),null);
if(first ==null){
first = n;
last = n;
}else{
last.next = n;
last = n;
}
}
}
public int ShowSize(){
int counter = 0;
Node n = first;
while(n!=null){
counter++;
n=n.next;
}
return counter;
}
public boolean equals(String s){
boolean eq = false;
int counter = 0;
char[] cArray = s.toCharArray();
char[] cArrayComp = new char[10];
Node n = first;
cArrayComp[counter] = n.inChar;
while(n!=null){
counter++;
n=n.next;
cArrayComp[counter] = n.inChar; //THIS IS LINE 69
}
if(cArrayComp==cArray){
eq = true;
}
else{
eq=false;
}
return eq;
}
}
公共类TextBuilder{
私有静态类节点{
公共卫生机构;
公共节点下一步;
公共节点(字符c,节点nästa){
英寸=c;
next=nästa;
}
}
private Node first=null;
私有节点last=null;
公共文本生成器(){
第一个=空;
last=null;
}
公共void追加(字符串s){
int x=s.长度();
对于(int i=0;i,快速一看,while循环中的计数器变量似乎超过了您设置的cArrayComp大小的10个字符。可能传递的字符串参数超过了10个字符
public boolean equals(String s){
boolean eq = false;
int counter = 0;
char[] cArray = s.toCharArray();
char[] cArrayComp = new char[10];
Node n = first;
while(n!=null){
System.out.println(counter);
cArrayComp[counter] = n.inChar;
System.out.println(cArrayComp[counter]);
System.out.println(n.inChar);
n=n.next;
counter++;
}
if(cArrayComp==cArray){
eq = true;
}
else{
eq=false;
}
return eq;
}
这是已更正的版本,我在您的循环中发现了一个错误。只需检查我的版本。在您的while循环中,它100%工作。您检查n是否为空,然后在访问n之前将n.next分配给n。问题是您没有确保分配的值(n.next)不为空。发布stacktrace,以便我们知道您获取空指针的确切位置。我已经编辑了帖子,请告诉我这是否是正确的信息。问题出现在异常中所述的第69行。我看不到代码中的第69行。很抱歉,我已经在代码中标记了第69行。向下滚动到equals方法,您将看到我试图改变这个值,我的字符串是7个字符长。但是它应该给我一个nullpointerexceptin吗?它不应该给我一个IndexAutofBound异常吗?解释:这是因为你在循环之前先做了一个n。因此,当循环开始时,它会被移位1。工作正常,我看到了问题lem现在。非常感谢你们。别忘了+1:D!开玩笑