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 -----------------
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.