实例化对象时的NullPointerException

时间:2012-01-28 12:06:56

标签: nullpointerexception

这是一个家庭作业,我将不胜感激任何答案。

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

Exception in thread "main" 8
java.lang.NullPointerException
    at labbfyra.TextBuilder.equals(TextBuilder.java:69)
    at labbfyra.SkapaOrd.main(SkapaOrd.java:17)

这是堆栈跟踪吗?

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;
    }
}

3 个答案:

答案 0 :(得分:1)

在while循环中,检查n不为null,但是在访问n之前将n.next分配给n。问题是您不能确保指定的值(n.next)不为空。

答案 1 :(得分:0)

快速浏览一下,看起来你的while循环中的计数器变量超过你设置cArrayComp大小的10。传递的字符串参数可能超过10个字符?

答案 2 :(得分:0)

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;
}

这是更正后的版本,我在你的循环中发现了一个错误。只需查看我的版本。工作在100%

相关问题