簡體   English   中英

Output 不會打印鏈表中的所有列表。 使用 java

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

我嘗試使用鏈表制作學生注冊系統列表。 因此,您可以將名稱添加到列表中,但問題是 output 僅打印用戶添加的名字而不是全部。

我嘗試添加邁克爾、凱特和羅斯的名字。 但 output 只顯示邁克爾。

output:

*****學生課程注冊系統*****

- - - - - - - - - - 菜單 - - - - - - - - -

  1. 將新學生添加到課程中
  2. 刪除/撤銷注冊
  3. 顯示學生信息
  4. 編輯學生數據
  5. 搜索課程中的學生
  6. 出口

您的選擇:3

學生姓名:邁克爾

請幫我顯示我添加到列表中的所有名稱。 先感謝您。 你的幫助對我真的很有幫助!


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 

在您當前的插入方法中,您將所有節點的鏈接設置為 newNode。 您應該將 set 調用移出循環

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

        }//else

已更正

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

        }//else
        current.setLink(newNode);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM