Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

  • Re: Common Java Mistakes

    Problem description: Forgetting to initialize a variable
    Problem category: Runtime problem

    Diagnosis Difficulty: Easy-medium
    Difficulty to Fix: Easy-medium


    This problem occurs when you forget to initialize an object variable. It will usually manifest itself as a Null Pointer Exception when you try to run the code.

    public class Node
    {
        public Node[] neighbors;
        public int value;
        public Node(int value)
        {
            this.value = value;
        }
    }

    public class NodeTester
    {
        public static void main(String[] args)
        {
            Node myNode = new Node(5);
            myNode.neighbors[0] = new Node(3);
        }
    }

    Error Message

    Probably 90% of the time this problem will manifest itself with a Null Pointer Exception when you try to run it. However, this exception will pop up at where the null value will cause a problem, not where you need to fix the problem.

    Exception in thread "main" java.lang.NullPointerException
    at NodeTester.main(NodeTester.java:6)
    Suggested fixes

    Look for where the value should have been initialized (almost always in the constructor if it's an object field), then initialize it to an appropriate value.

    public class Node
    {
        public Node[] neighbors;
        public int value;
        public Node(int value)
        {
            this.value = value;
            this.neighbors = new Node[5]; // can have 2 neighbors
        }
    }
    Common Java Mistakes helloworld922
    1
    1. patricajohnson51 -
      The issue in the provided code is that the neighbors array is not initialized when a Node object is created. Therefore, when trying to access myNode.neighbors[0], a NullPointerException occurs because neighbors is still null.

      To fix this, you need to initialize the neighbors array either when declaring it or in the constructor. Here's the modified code:
      public class Node {
      public Node[] neighbors;
      public int value;

      public Node(int value) {
      this.value = value;
      // Initialize neighbors array to an appropriate size
      this.neighbors = new Node[5]; // Assuming a maximum of 5 neighbors
      }
      }

      public class NodeTester {
      public static void main(String[] args) {
      Node myNode = new Node(5);
      myNode.neighbors[0] = new Node(3);
      }
      }
      Now, when you create a Node object, its neighbors array will be initialized, and you won't encounter a NullPointerException when accessing its elements. You can find more assistance with Java assignments on https://www.programminghomeworkhelp....va-assignment/