简体   繁体   中英

Output does not print all of the list in linked list. Using java

I tried to make a list of student registration system using linked list. So you can add names to the list but the problem is the output only print the first name that user add instead of all of them.

I tried to add name of Michael, Kate, and Rose. but the output only displaying Michael.

output:

*****STUDENT COURSE REGISTRATION SYSTEM*****

-------------------- MENU -----------------

  1. ADD NEW STUDENT TO COURSE
  2. REMOVE/WITHDRAW ENROLLMENT
  3. DISPLAY STUDENT INFORMATION
  4. EDIT STUDENT DATA
  5. SEARCH STUDENT IN THE COURSE
  6. EXIT

Your choice:3

Student Name: Michael

please help me to display all the name that I've added to the list. Thank you in advance. Your help will be really helpful for me!


public class LinkedList2nd {
    Node head; 

    static class Node 
{   
   // Data fields for Node   
   Object info;  // data stored in the node
   Node link;         // link to next node

   // Methods
   // Constructors
   // postcondition: Creates a new empty node.
   public Node() {
     info = null;
     link = null;

   }

   // postcondition: Creates a new node storing obj.
   public Node(Object obj) {
     info = obj;
     link = null;
   }

   // postcondition: Creates a new node storing obj 
   //   and linked to node referenced by next.
   public Node(Object obj, Node next) {
     info = obj;
     link = next;
   } 
   // accessors

   public Object getInfo() 
   {
      return info;
   }

   public Node getLink() 
   {
      return link;
   }


   // mutators
   public void setInfo(Object newInfo) 
   {
      info = newInfo;
   }

   public void setLink(Node newLink) 
   {
      link = newLink;
   }
} 

    public static LinkedList2nd insert(LinkedList2nd list,Object info){
        Node newNode = new Node(info);
        if(list.head == null){
            list.head = newNode;
        }
        else {
          //inserting last node 
            Node current = list.head;
           while(current.getLink() != null){
            current = current.getLink();
            current.setLink(newNode); }//while 

            }//else

        return list;
    }

    public static void printList(LinkedList2nd list){
        Node current = list.head; 

        System.out.println("Student Name\n--------------");

        while(current != null){
          System.out.println(current.getInfo() + " ");
          current = current.link;//to next node 

        }//while

        System.out.println("\n");
    }

}



//`enter code here`MAIN CLASS : 


public class Main {
//STUDENT COURSE REGISTRATION SYSTEM 
    static LinkedList2nd name = new LinkedList2nd();
    //static LinkedList matric = new LinkedList();
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int choice;
        do {
            menu();
            System.out.print("Your choice:");
            choice=sc.nextInt();
            if (choice==0){
              System.out.println("Thank you and Good Bye.");
            break;
              }
            else 
            processChoice(choice);
            } while (choice !=0);
          }//end main



    static void menu(){
        System.out.println("*****STUDENT COURSE REGISTRATION SYSTEM*****");
        System.out.println("********************************************");
        System.out.println("-------------------- MENU ------------------\n"
                        +"1. ADD NEW STUDENT TO COURSE\n"
                        +"2. REMOVE/WITHDRAW ENROLLMENT\n"
                        +"3. DISPLAY STUDENT INFORMATION\n"
                        +"4. EDIT STUDENT DATA\n"
                        +"5. SEARCH STUDENT IN THE COURSE\n"
                        +"0. EXIT");
          }//menu

    static void processChoice(int choice){
        switch (choice) {
            case 1:
                addStudent();
                break;

            case 3:
                displayList();
                break; 

            default:
                break;
        }    
    }

    static void addStudent(){
        Scanner read = new Scanner(System.in);
        System.out.println("Enter Student Name : ");
        String inputName = read.nextLine();
        name.insert(name, inputName);


    }

    static void displayList(){
        name.printList(name);

    }

    }//class 

In your current insert method, you are setting the link of all nodes to newNode. You should move the set call out of the loop

       while(current.getLink() != null){
        current = current.getLink();
        current.setLink(newNode); }//while 

        }//else

Corrected

       while(current.getLink() != null){
        current = current.getLink();

        }//else
        current.setLink(newNode);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM