实例化对象时的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

这是一个家庭作业,我希望得到任何答案

我试图弄明白为什么我调用equals方法时总是得到一个NullPointerException。如果我没有弄错的话,我已经实例化了这个对象,但是它仍然不起作用

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!开玩笑