null parameters miscounts id on nodes











up vote
0
down vote

favorite












So for my cs class we need to make a family tree with nodes with two nodes as roots. Every-time a node is created it has a unique id and the counter will keep increasing for every new node. I have a question regarding instantiating a class and setting items to null and counting every time a new node is created.



public class Node<T> implements Comparable<Node<T>> {
// instance variables
static int instanceCounter = 0;
int id = 0;
private T element;
private Node<T> fparent;
private Node<T> sparent;
private List<Node<T>> children;


public Node() {
instanceCounter++;
id = instanceCounter;
this(null, null, null, null, null); // -> this does not work
}

public Node(T element) {
this.element = element;
instanceCounter++;
id = instanceCounter;
}

public Node(T element, Node<T> fparent, Node<T> sparent, List<Node<T>> children) {
instanceCounter++;
id = instanceCounter;
this.element = element;
this.setFparent(fparent);
this.setSparent(sparent);
this.setChildren(children);
}


However this works:



   public Node() {
this(null, null, null, null, null);
instanceCounter++;
id = instanceCounter;
}


What I want is :



Node 1 : Id = 1

Node 2 : Id = 2

Node 3 : Id = 3



but this what I get when the node instantiated with nothing in the parameters:



Node 1 : Id = 2

Node 2 : Id = 3

Node 3 : Id = 4










share|improve this question







New contributor




peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    0
    down vote

    favorite












    So for my cs class we need to make a family tree with nodes with two nodes as roots. Every-time a node is created it has a unique id and the counter will keep increasing for every new node. I have a question regarding instantiating a class and setting items to null and counting every time a new node is created.



    public class Node<T> implements Comparable<Node<T>> {
    // instance variables
    static int instanceCounter = 0;
    int id = 0;
    private T element;
    private Node<T> fparent;
    private Node<T> sparent;
    private List<Node<T>> children;


    public Node() {
    instanceCounter++;
    id = instanceCounter;
    this(null, null, null, null, null); // -> this does not work
    }

    public Node(T element) {
    this.element = element;
    instanceCounter++;
    id = instanceCounter;
    }

    public Node(T element, Node<T> fparent, Node<T> sparent, List<Node<T>> children) {
    instanceCounter++;
    id = instanceCounter;
    this.element = element;
    this.setFparent(fparent);
    this.setSparent(sparent);
    this.setChildren(children);
    }


    However this works:



       public Node() {
    this(null, null, null, null, null);
    instanceCounter++;
    id = instanceCounter;
    }


    What I want is :



    Node 1 : Id = 1

    Node 2 : Id = 2

    Node 3 : Id = 3



    but this what I get when the node instantiated with nothing in the parameters:



    Node 1 : Id = 2

    Node 2 : Id = 3

    Node 3 : Id = 4










    share|improve this question







    New contributor




    peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      So for my cs class we need to make a family tree with nodes with two nodes as roots. Every-time a node is created it has a unique id and the counter will keep increasing for every new node. I have a question regarding instantiating a class and setting items to null and counting every time a new node is created.



      public class Node<T> implements Comparable<Node<T>> {
      // instance variables
      static int instanceCounter = 0;
      int id = 0;
      private T element;
      private Node<T> fparent;
      private Node<T> sparent;
      private List<Node<T>> children;


      public Node() {
      instanceCounter++;
      id = instanceCounter;
      this(null, null, null, null, null); // -> this does not work
      }

      public Node(T element) {
      this.element = element;
      instanceCounter++;
      id = instanceCounter;
      }

      public Node(T element, Node<T> fparent, Node<T> sparent, List<Node<T>> children) {
      instanceCounter++;
      id = instanceCounter;
      this.element = element;
      this.setFparent(fparent);
      this.setSparent(sparent);
      this.setChildren(children);
      }


      However this works:



         public Node() {
      this(null, null, null, null, null);
      instanceCounter++;
      id = instanceCounter;
      }


      What I want is :



      Node 1 : Id = 1

      Node 2 : Id = 2

      Node 3 : Id = 3



      but this what I get when the node instantiated with nothing in the parameters:



      Node 1 : Id = 2

      Node 2 : Id = 3

      Node 3 : Id = 4










      share|improve this question







      New contributor




      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      So for my cs class we need to make a family tree with nodes with two nodes as roots. Every-time a node is created it has a unique id and the counter will keep increasing for every new node. I have a question regarding instantiating a class and setting items to null and counting every time a new node is created.



      public class Node<T> implements Comparable<Node<T>> {
      // instance variables
      static int instanceCounter = 0;
      int id = 0;
      private T element;
      private Node<T> fparent;
      private Node<T> sparent;
      private List<Node<T>> children;


      public Node() {
      instanceCounter++;
      id = instanceCounter;
      this(null, null, null, null, null); // -> this does not work
      }

      public Node(T element) {
      this.element = element;
      instanceCounter++;
      id = instanceCounter;
      }

      public Node(T element, Node<T> fparent, Node<T> sparent, List<Node<T>> children) {
      instanceCounter++;
      id = instanceCounter;
      this.element = element;
      this.setFparent(fparent);
      this.setSparent(sparent);
      this.setChildren(children);
      }


      However this works:



         public Node() {
      this(null, null, null, null, null);
      instanceCounter++;
      id = instanceCounter;
      }


      What I want is :



      Node 1 : Id = 1

      Node 2 : Id = 2

      Node 3 : Id = 3



      but this what I get when the node instantiated with nothing in the parameters:



      Node 1 : Id = 2

      Node 2 : Id = 3

      Node 3 : Id = 4







      java






      share|improve this question







      New contributor




      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 17 hours ago









      peter-cs

      12




      12




      New contributor




      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      peter-cs is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          instanceCounter is incremented twice when you call the default constructor. You should change your default constructor code to.



          public Node() {
          instanceCounter++;
          id = instanceCounter;
          //No call required here as all elements are already null
          }





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            peter-cs is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237719%2fnull-parameters-miscounts-id-on-nodes%23new-answer', 'question_page');
            }
            );

            Post as a guest
































            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            instanceCounter is incremented twice when you call the default constructor. You should change your default constructor code to.



            public Node() {
            instanceCounter++;
            id = instanceCounter;
            //No call required here as all elements are already null
            }





            share|improve this answer

























              up vote
              0
              down vote













              instanceCounter is incremented twice when you call the default constructor. You should change your default constructor code to.



              public Node() {
              instanceCounter++;
              id = instanceCounter;
              //No call required here as all elements are already null
              }





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                instanceCounter is incremented twice when you call the default constructor. You should change your default constructor code to.



                public Node() {
                instanceCounter++;
                id = instanceCounter;
                //No call required here as all elements are already null
                }





                share|improve this answer












                instanceCounter is incremented twice when you call the default constructor. You should change your default constructor code to.



                public Node() {
                instanceCounter++;
                id = instanceCounter;
                //No call required here as all elements are already null
                }






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 17 hours ago









                Abhisar

                965




                965






















                    peter-cs is a new contributor. Be nice, and check out our Code of Conduct.










                     

                    draft saved


                    draft discarded


















                    peter-cs is a new contributor. Be nice, and check out our Code of Conduct.













                    peter-cs is a new contributor. Be nice, and check out our Code of Conduct.












                    peter-cs is a new contributor. Be nice, and check out our Code of Conduct.















                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237719%2fnull-parameters-miscounts-id-on-nodes%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest




















































































                    Popular posts from this blog

                    Xamarin.iOS Cant Deploy on Iphone

                    Glorious Revolution

                    Dulmage-Mendelsohn matrix decomposition in Python