Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 - Fatal编程技术网

Java 队列的删除方法

Java 队列的删除方法,java,Java,我尝试实现一个循环队列,我想从队列中删除一个客户,但是它删除了两个客户而不是一个客户。 例如,我在队列中添加了4个客户(“Joe”、“Mary”、“Carol”和“George”),他们都被显示出来。假设我想删除(“Joe”)并显示队列。它显示我(“卡罗尔”、“乔治”),这意味着它还删除了“玛丽”。。。我不知道如何解决这个问题 我的队列将由从等候室移动到CustomerQueue的客户组成。最大客户数量为33 这是我的密码: package hotelbooking; public class

我尝试实现一个循环队列,我想从队列中删除一个客户,但是它删除了两个客户而不是一个客户。 例如,我在队列中添加了4个客户(“Joe”、“Mary”、“Carol”和“George”),他们都被显示出来。假设我想删除(“Joe”)并显示队列。它显示我(“卡罗尔”、“乔治”),这意味着它还删除了“玛丽”。。。我不知道如何解决这个问题

我的队列将由从等候室移动到CustomerQueue的客户组成。最大客户数量为33

这是我的密码:

package hotelbooking;

public class HotelBooking {
    static int ROOM_CAPACITY = 33;

    private static Customer[] waitingRoom = new Customer[ROOM_CAPACITY]; 
    private static CustomerQueue hotelQueue = new CustomerQueue();
这是用户从队列中删除第一个客户的方法

private static void DeleteCustomerFromHotelQueue(Customer[] waitingRoom) {
        System.out.println(hotelQueue.remove() + " ");
    }
有人能在我挣扎的时候帮我吗?

for(int I=front;Ifor (int i = front; i < currentSize; i++) 
您想在这里以
i=0
开始(int i=front;i
你想从这里的
i=0
开始

我想你必须使用

System.out.println(queArray[(i)%queArray.length] + "");
您是从数组的前端开始的,因此我认为您不需要再次向它添加该值

================编辑=================

我试过一个样品,下面的对我有用


    public void display() {
        //list elements from front to end in the queArray
        for (int i = front; i <= currentSize; i++) {
            System.out.println(queArray[(i)%queArray.length] + "");
            //queArray[i].display();
        }
    }
当我在for循环中将
I=front
更改为
I=0
时,我得到了下面的输出

null
City [city=asd]
City [city=zxc]
City [city=zaq]

我想我再也解释不清楚了。希望这有助于您理解问题和解决方案

我认为您必须使用

System.out.println(queArray[(i)%queArray.length] + "");
您是从数组的前端开始的,因此我认为您不需要再次向它添加该值

================编辑=================

我试过一个样品,下面的对我有用


    public void display() {
        //list elements from front to end in the queArray
        for (int i = front; i <= currentSize; i++) {
            System.out.println(queArray[(i)%queArray.length] + "");
            //queArray[i].display();
        }
    }
当我在for循环中将
I=front
更改为
I=0
时,我得到了下面的输出

null
City [city=asd]
City [city=zxc]
City [city=zaq]


我想我再也解释不清楚了。希望这有助于您了解问题和解决方案

即使我这样做了,它仍然会删除两个客户,而不仅仅是一个@nithin您能否确认是否已调试并验证队列中只有两个客户?如果没有,请确认,因为看到代码我觉得它很正常。事情是我对java非常陌生,所以我实际上不知道调试器是如何工作的,但我确实尝试过调试它,调试器中显示的唯一内容是“监听60503用户程序运行”@nithin如果您使用的是IDE,它非常简单,我更喜欢并使用intellij IDEA您使用了什么?我使用的是netBeans@nithine即使我这样做了,它仍然会删除两个客户,而不仅仅是一个@nithin。您能否确认是否已调试并验证队列中只有两个客户?如果没有,请确认,因为看到代码我觉得它很正常。事情是我对java非常陌生,所以我实际上不知道调试器是如何工作的,但我确实尝试过调试它,调试器中显示的唯一内容是“监听60503用户程序运行”@nithin如果您使用的是IDE,它非常简单,我更喜欢并使用intellij IDEA你在使用什么?我在使用netBeans@nithin当你删除一个客户时,front变为1,然后你从1开始。我不明白,如果代码已经在我的显示器中实现了,那么我应该如何实现代码()方法@sparikChange
i=front
i=0
在for循环中,我所做的就是给我空值,然后第二个乘客@sparikChange当你删除一个客户时,front变为1,然后你从1开始,我不明白,那么我应该如何实现代码,如果它已经在我的display()方法@sparikChange
I=front
to
I=0
中实现,那么在for循环中,我所做的就是给我null,然后第二个乘客@斯巴里克