Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java获取第一个元素,然后删除第一个元素,打印其余元素_Java_Linked List - Fatal编程技术网

Java获取第一个元素,然后删除第一个元素,打印其余元素

Java获取第一个元素,然后删除第一个元素,打印其余元素,java,linked-list,Java,Linked List,这是我的密码: import java.util.LinkedList; import java.util.Scanner; import java.util.InputMismatchException; import java.util.*; class Customer { public String lastName; public String firstName; public Customer() { }

这是我的密码:

import java.util.LinkedList;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.*;





class Customer {
       public String lastName;
       public String firstName;
       public Customer() {
       }
       public Customer(String last, String first) {
          this.lastName = last;
          this.firstName = first;
       }
       public String toString() {
          return firstName + " " + lastName;
       }
    }
    class HourlyCustomer extends Customer {
       public double hourlyRate;
       public HourlyCustomer(String last, String first) {
          super(last, first);
       }
    }

class GenQueue<E> {
   private LinkedList<E> list = new LinkedList<E>();
   public void enqueue(E item) {
      list.addLast(item);
   }
   public E dequeue() {
      return list.poll();
   }
   public boolean hasItems() {
      return !list.isEmpty();
   }
   public boolean isEmpty()
   {
      return list == null;
   }
   public E removeFirst(){
       return list.removeFirst();
   }
   public E getFirst(){
       return list.getFirst();
   }
   public int size() {
      return list.size();
   }

   public void addItems(GenQueue<? extends E> q) {
      while (q.hasItems()) list.addLast(q.dequeue());
   }
}





public class something {

    public static void main(String[] args){

        while(true){

        Scanner sc = new Scanner(System.in);
        String input1;
        String input2;
        int choice = 1000;




        GenQueue<Customer> empList;
        empList = new GenQueue<Customer>();
        GenQueue<HourlyCustomer> hList;
        hList = new GenQueue<HourlyCustomer>(); 

        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("0, Quit\n");
            System.out.println("Enter Choice:");
            try{

                choice = sc.nextInt();



                switch(choice){
                case 1:

                    do{


                    System.out.println("\nPlease enter last name:  ");
                    input1 = sc.next();
                    System.out.println("\nPlease enter first name:  ");
                    input2 = sc.next();
                    hList.enqueue(new HourlyCustomer(input1, input2));
                    empList.addItems(hList);

                    System.out.println("\n"+(input2 + " " +  input1) + " is successful queued");

                    System.out.println("\nDo you still want to enqueue?<1> or do you want to view all in queue?<0> or \nBack to main menu for dequeueing?<menu>: ");
                    choice = sc.nextInt();

                    }while (choice != 0);



                     System.out.println("\nThe customers' names are: \n");

                     while (empList.hasItems()) {
                     Customer emp = empList.dequeue();
                     System.out.println(emp.firstName + " " + emp.lastName + "\n" );
                     }
//                     int choose;
//                     do{
//                       
//                     
//                     System.out.println("\nGo back to main?<1=Yes/0=No>: \n");
//                     choose = sc.nextInt();
//                     }while (choose != 1);

                     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 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.LinkedList;
导入java.util.Scanner;
导入java.util.InputMismatchException;
导入java.util.*;
类客户{
公共字符串lastName;
公共字符串名;
公众客户(){
}
公共客户(最后一个字符串,第一个字符串){
this.lastName=last;
this.firstName=first;
}
公共字符串toString(){
返回firstName+“”+lastName;
}
}
类小时客户扩展客户{
公共双小时制;
公共小时客户(最后一个字符串,第一个字符串){
超级(最后,第一);
}
}
类队列{
私有LinkedList=新建LinkedList();
公共无效排队(E项){
列表。添加最后一个(项目);
}
公共E出列(){
返回list.poll();
}
公共项目(){
return!list.isEmpty();
}
公共布尔值为空()
{
返回列表==null;
}
公共E removeFirst(){
return list.removeFirst();
}
公共E getFirst(){
return list.getFirst();
}
公共整数大小(){
返回list.size();
}
当列表为空时,将抛出public void addItems(GenQueue)

您应该在调用该方法之前处理该特定情况,例如:

if (!empList.hasItems()) {
    System.out.println("The queue is empty!");
} else {
    System.out.println("First in queue: "  +empList.getFirst());
    ...   // rest of code
}

问题在这里…System.out.println(“队列中的第一名:+empList.getFirst());您正在尝试获取空队列。谢谢,但在添加了一些内容后出现了相同的错误,我在此处编辑了代码。您的代码最初对我的代码起作用,但在添加while后出于某种原因(true),这样它会在一个案例后返回主菜单,我又遇到了错误。请你再看一次好吗?我已经做了测试和调试,无法理解@Loris@Rekt
list==null
并不意味着列表为空,您应该删除该
isEmpty
方法。您应该使用
返回list.isEmpty();
。但是您已经在
hasItems
中使用了该选项,所以只需调用它,我已经相应地更新了我的答案。另外,您应该在调用第二个
getFirst
之前添加相同的检查。