0

Please help me with the double linked list, when I write the command in terminal to test main class by my source code the cmd.exe throw me:

Exception in thread "main" java.lang.NullPointerException
        at homework.List.add(Homework2.java:19)
        at homework.Homework2Main.main(Homework2Main.java:20)

In 19 line is something wrong in source code, I tag him. Please I need help.

Code:

package homework;

class Node {
    Node previous, next;
    int contents;

    Node(int val) {
        this.contents = val;
    }
}

class List {
    Node first;

    void add(int num) {
        Node x = new Node(num);
        if(first.next == null) {                  //this line 
            this.first = x;
        }else{
            Node current = this.first;
            boolean inList = false;

            while(current.next != null) {
                if(current.contents == num) inList = true;
                current = current.next;
            }

            if(!inList) {
                current.next = x;
                x.previous = current;
            }
        }
    }

    void remove(int num) {
        Node current = this.first;

        while(current.next != null) {
            if(current.contents == num) {
                if(current.previous != null) {
                    current.previous.next = current.next;
                }
                if(current.next != null) {
                    current.next.previous = current.previous;
                }
            }
            current = current.next;
        }
    }

    boolean contains(int num) {
        Node current = this.first;

        while(current.next != null) {
            if(current.contents == num) return true;
            current = current.next;
        }

        return false;
    }
}

Edited by mike_2000_17: Fixed formatting

3
Contributors
5
Replies
7
Views
5 Years
Discussion Span
Last Post by javaAddict
Featured Replies
  • Is this line 19: if(first.next == null) { //this line If yes then according to the exception you are trying to use something which is null. In this case I assume that it is the "first" I don't know your logic but, maybe you need this: if(first == null) { … Read More

1

Is this line 19:

if(first.next == null) { //this line 

If yes then according to the exception you are trying to use something which is null. In this case I assume that it is the "first"

I don't know your logic but, maybe you need this:

if(first == null) {
  ...
} else { ...

OR

if(first == null || first.next==null) {
  ...
} else { ...

In any case you need to check if "first" is null and/or first.next before you use either one.

And use code tags. Press the button (code) when you make your post

Edited by mike_2000_17: Fixed formatting

0

I use this offers, and doesn't work... I have some Homewrok2Main.class and my source code called Homework2.java.All that in one file called homework. In terminal I enter the command java -cp../ homework.Homework2Main and the terminal throw me same expression of exception... I don't know what to do, and I think the code is correct.

0

The line 15, you should initiate

Node first=null;

Then line 19 should be only if(first==null).

Please use 'code' tag provided by the forum. It's very difficult to read your code in plain text.

0

Here is a code

package homework;

class Node {
    Node previous, next;
    int contents;

    Node(int val) {
        this.contents = val;
    }
}

class List {
    Node first;

    void add(int num) {
        Node x = new Node(num);
        if(first.next == null) {
            this.first = x;
        }else{
            Node current = this.first;
            boolean inList = false;

            while(current.next != null) {
                if(current.contents == num) inList = true;
                current = current.next;
            }

            if(!inList) {
                current.next = x;
                x.previous = current;
            }
        }
    }

    void remove(int num) {
        Node current = this.first;

        while(current.next != null) {
            if(current.contents == num) {
                if(current.previous != null) {
                    current.previous.next = current.next;
                }
                if(current.next != null) {
                    current.next.previous = current.previous;
                }
            }
            current = current.next;
        }
    }

    boolean contains(int num) {
        Node current = this.first;

        while(current.next != null) {
            if(current.contents == num) return true;
            current = current.next;
        }

        return false;
    }
}

It doesnt help.

0

As I already said before, you use an object which is null. Before you use the "first" you need to check if it is null or not. The line tells you where the error is.

And of course Taywin gave you the same suggestion

Edited by javaAddict: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.