2016-01-07 65 views
1

我正在寫一個程序,讓學生去某個部門或教職員的收銀員獲得一個自動生成的令牌號碼,並排隊等候輪到他們進入。該程序應允許用戶通過將他的姓名和令牌編號添加到系統中的其他功能中來插入新的學生。Java:如何使用參數添加或創建新對象並將其添加到隊列中?

我不知道如何將新學生添加到隊列中。

這裏是我想出迄今:

Student類

package queues; 

import java.util.Random; 

public class Student { 

    private String name; 

    private int tnum; 

public Student(String name, int tnum){ 
    this.name=name; 
    this.tnum=tnum; 
} 

public String getName() { 
    return name; 
} 


public void setName(String name) { 
    this.name = name; 
} 


public int getTnum() { 
    return tnum; 
} 


public void setTnum(int tnum) { 
    this.tnum = tnum; 
} 


public String toString(){ 
    return "Student name: "+ name+ " Token num: "+tnum; 
    } 

} 

主類

package queues; 

import java.util.LinkedList; 
import java.util.Queue; 
import java.util.Random; 
import java.util.Scanner; 

public class Student_Main{ 


    public static void main(String[] args) { 

    Scanner sc= new Scanner(System.in); 

    int opt; 

    Student stdt= new Student("Sophia", 1); 
    Student stdt2= new Student("Amelia", 2); 
    Student stdt3= new Student("Karxlina", 4); 
    Student stdt4= new Student("Rachel", 3); 

    Queue<Student> stdtQ= new LinkedList<Student>(); 

    stdtQ.add(stdt); 
    stdtQ.add(stdt2); 
    stdtQ.add(stdt3); 
    stdtQ.add(stdt4); 

    System.out.println(stdtQ); 

    System.out.println("Please choose an option. "); 
    System.out.println("To insert new student, enter 1."); 

    opt= sc.nextInt(); 

    if(opt==1){ 
     stdtQ.add(Student(sc.hasNext(), sc.nextInt())); /*this doesn't work of course*/ 
     } 



    } 


} 

回答

2

你應該寫:

stdtQ.add(new Student(sc.hasNext(), sc.nextInt())); 
+0

謝謝!它應該是'stdtQ.add(new Student(sc.next(),sc.nextInt()));'儘管 – Tia

1

隊列通常以FIFO方式排序元素。因此,如果您有興趣使用令牌編號對隊列進行排序,您應該檢查優先級隊列。

通過調用add方法,您已經將新元素添加到​​隊列中。如果您想讓其他學生加入該隊列,您必須先創建該對象(例如,通過從輸入中獲取值),然後使用add方法添加該對象。

您可以打印所有的學生在這樣的隊列:

for(Student s : stdtQ){ 
    System.out.println(s.getName() + s.getTnum()); 
} 
相關問題