Java队列、出列和打印排队/出列列表中的所有值

Java队列、出列和打印排队/出列列表中的所有值,java,linked-list,Java,Linked List,你好,我想这部分我真的很难理解。我正在制作一个程序,它接受来自用户的一个值,即名字和姓氏,然后将其排队(案例1)。然后可以将其出列(案例2),最后显示列表中的所有内容。IDE上没有错误,但是我无法得到我想要的结果,在案例2中,它抛出异常错误,这意味着传递给它的列表是空的。在情况3中,未显示任何值。我该如何解决这个问题 import java.util.*; import java.util.Iterator; class Customer2 { public String lastNa

你好,我想这部分我真的很难理解。我正在制作一个程序,它接受来自用户的一个值,即名字和姓氏,然后将其排队(案例1)。然后可以将其出列(案例2),最后显示列表中的所有内容。IDE上没有错误,但是我无法得到我想要的结果,在案例2中,它抛出异常错误,这意味着传递给它的列表是空的。在情况3中,未显示任何值。我该如何解决这个问题

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()方法中添加什么?