Java队列、出列和打印排队/出列列表中的所有值
你好,我想这部分我真的很难理解。我正在制作一个程序,它接受来自用户的一个值,即名字和姓氏,然后将其排队(案例1)。然后可以将其出列(案例2),最后显示列表中的所有内容。IDE上没有错误,但是我无法得到我想要的结果,在案例2中,它抛出异常错误,这意味着传递给它的列表是空的。在情况3中,未显示任何值。我该如何解决这个问题Java队列、出列和打印排队/出列列表中的所有值,java,linked-list,Java,Linked List,你好,我想这部分我真的很难理解。我正在制作一个程序,它接受来自用户的一个值,即名字和姓氏,然后将其排队(案例1)。然后可以将其出列(案例2),最后显示列表中的所有内容。IDE上没有错误,但是我无法得到我想要的结果,在案例2中,它抛出异常错误,这意味着传递给它的列表是空的。在情况3中,未显示任何值。我该如何解决这个问题 import java.util.*; import java.util.Iterator; class Customer2 { public String lastNa
import java.util.*;
import java.util.Iterator;
class Customer2 {
public String lastName;
public String firstName;
public Customer2() {
}
public Customer2(String last, String first) {
this.lastName = last;
this.firstName = first;
}
public String toString() {
return firstName + " " + lastName;
}
}
class HourlyCustomer2 extends Customer2 {
public double hourlyRate;
public HourlyCustomer2(String last, String first) {
super(last, first);
}
}
class Queue1<E> {
private LinkedList<E> list = new LinkedList<E>();
public void enqueue(E item) {
list.addLast(item);
}
public E dequeue() {
// return a Customer2 with null values if empty? (up to you)
return list.remove(0);
}
public E isNotEnd(){
return list.getLast();
}
public boolean hasItems() {
return !list.isEmpty();
}
public boolean isEmpty() {
return list.isEmpty();
}
public Iterator<E> iterator() {
return list.iterator();
}
public E removeFirst() {
return list.removeFirst();
}
public E getFirst() {
return list.getFirst();
}
public int size() {
return list.size();
}
public boolean hasNext() {
return false;
}
public void addItems(Queue1<? extends E> q) {
while (q.hasNext()) list.addLast(q.dequeue());
}
}
public class something {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input1;
String input2;
int choice = 1000;
Queue1<Customer2> empList;
empList = new Queue1<Customer2>();
Queue1<HourlyCustomer2> hList;
hList = new Queue1<HourlyCustomer2>();
do {
System.out.println("================");
System.out.println("Queue Operations Menu");
System.out.println("================");
System.out.println("1,Enquene");
System.out.println("2,Dequeue");
System.out.println("3,View queue");
System.out.println("0, Quit\n");
System.out.println("Enter Choice:");
try {
choice = sc.nextInt();
switch(choice) {
case 1:
System.out.println("\nPlease enter last name: ");
input1 = sc.next();
System.out.println("\nPlease enter first name: ");
input2 = sc.next();
hList.enqueue(new HourlyCustomer2(input1, input2));
empList.addItems(hList);
System.out.println("\n"+(input2 + " " + input1) + " is successful queued");
break;
case 2:
if (empList.isEmpty()) {
System.out.println("The queue is empty!");
}
else
{
System.out.println("\nDequeued customer: " +empList.getFirst());
empList.removeFirst();
}
System.out.println("\nNext customer in queue: " +empList.getFirst()+"\n");
break;
case 3:
System.out.println("\nThe Customer's names are: \n");
Iterator<Customer2> it = empList.iterator();
while (it.hasNext()) {
System.out.println("\nThe customers' names are: \n");
}
break;
case 0:
System.exit(0);
default:
System.out.println("Invalid choice");
}
}
catch(InputMismatchException e) {
System.out.println("Please enter 1-5, 0 to quit");
sc.nextLine();
}
} while(choice != 0);
}
}
import java.util.*;
导入java.util.Iterator;
类客户2{
公共字符串lastName;
公共字符串名;
公共客户2(){
}
公共客户2(最后一个字符串,第一个字符串){
this.lastName=last;
this.firstName=first;
}
公共字符串toString(){
返回firstName+“”+lastName;
}
}
类HourlyCustomer2扩展Customer2{
公共双小时制;
公共小时客户2(最后一个字符串,第一个字符串){
超级(最后,第一);
}
}
类队列1{
私有LinkedList=新建LinkedList();
公共无效排队(E项){
列表。添加最后一个(项目);
}
公共E出列(){
//如果为空,则返回值为空的Customer2?(由您决定)
返回列表。删除(0);
}
公共E isNotEnd(){
return list.getLast();
}
公共项目(){
return!list.isEmpty();
}
公共布尔值为空(){
return list.isEmpty();
}
公共迭代器迭代器(){
return list.iterator();
}
公共E removeFirst(){
return list.removeFirst();
}
公共E getFirst(){
return list.getFirst();
}
公共整数大小(){
返回list.size();
}
公共布尔hasNext(){
返回false;
}
public void addItems(Queue1查看您的自定义队列;您忘记将逻辑放入hasNext方法中。它将始终返回false。因此您的addItems循环将永远不会向队列添加任何项
如果您需要关于如何执行hasNext()的提示,我的建议是查看列表的大小并进行简单的比较
public boolean hasNext(){
返回false;
}
public void addItems(Queue1)您认为我应该在hasNext()方法中添加什么?