gpt4 book ai didi

Java:如何根据特定属性从队列中删除对象?

转载 作者:行者123 更新时间:2023-11-30 07:41:03 25 4
gpt4 key购买 nike

我必须编写一个程序来模拟一个队列,在该队列中,前往图书馆的学生会获得一个 token ,并被要求在逻辑队列中等待轮到他们。 token 编号是自动生成的。

程序应显示一个菜单,允许用户随时:

  1. 在队列中插入新学生。

  2. 查看名称和 token 编号。队列前面的学生的照片。

  3. 从队列中删除学生。

  4. 找出队列中有多少学生。

还应该有一个退出程序的选项。

我已经能够实现选项 1、2 和 4。由于没有提到如何删除学生,我想删除可以通过输入学生姓名或 token 号,但我不知道该怎么做。

这是我到目前为止所做的:

Student.java 类

 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;
}

}

Student_Main.java 类

  package queues;

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

public class Student_Main{


public static void main(String[] args) {

Scanner sc= new Scanner(System.in);

int opt;
int tno;

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);

while(true){

System.out.println("Please choose an option. ");
System.out.println();
System.out.println("To insert new student, enter 1.");
System.out.println();
System.out.println("To view the name and token number of a student in front, enter 2.");
System.out.println();
System.out.println("To delete a student, enter 3.");
System.out.println();
System.out.println("To find out the number of students, enter 4.");
System.out.println();
System.out.println("To exit the system, enter 5.");

opt= sc.nextInt();


if(opt==1){
System.out.println("Enter student's name and token number.");
stdtQ.add(new Student(sc.next(), sc.nextInt()));

System.out.println("New queue: ");
System.out.println(stdtQ);
}



if(opt==2){
System.out.println(stdtQ.peek());
}

if(opt==3){

}

if(opt==4){
System.out.println("Number of students in the queue is: "+ stdtQ.size());
System.out.println(stdtQ);
}

if(opt==5){
System.exit(0);
}


}

}
}

最佳答案

if(opt==3){             
System.out.println("Enter token num to delete");
int to_num = sc.nextInt();
Iterator<Student> itr = stdtQ.iterator();

while(itr.hasNext()){
Student obj = itr.next();
if( obj.getTnum() == to_num)
{
stdtQ.remove(obj);
break;
}
}
}

关于Java:如何根据特定属性从队列中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com