Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays - Fatal编程技术网

Java 使用数组像队列一样存储元素

Java 使用数组像队列一样存储元素,java,arrays,Java,Arrays,我正在做酒店项目,我的排队课有问题。 我需要在我的程序中创建队列对象以添加到队列并从队列中获取。每次向房间添加名称时,都应使用队列对象方法将客户的名称添加到队列中。当用户选择显示前3位客户的姓名时,我的代码应将他们逐个(先进先出)从队列中删除,并在删除时显示 队列应基于数组。当队列项到达数组的末尾时,应将它们添加到起始或数组中。如果队列已满,则应自动删除并显示最旧的队列项目 目前的问题是,当端点达到5时,它应该推动第一个输入,并获取最后一个输入,然后将其移动到数组的前面。另外请注意,队列必须基于

我正在做酒店项目,我的排队课有问题。 我需要在我的程序中创建队列对象以添加到队列并从队列中获取。每次向房间添加名称时,都应使用队列对象方法将客户的名称添加到队列中。当用户选择显示前3位客户的姓名时,我的代码应将他们逐个(先进先出)从队列中删除,并在删除时显示

队列应基于数组。当队列项到达数组的末尾时,应将它们添加到起始或数组中。如果队列已满,则应自动删除并显示最旧的队列项目

目前的问题是,当端点达到5时,它应该推动第一个输入,并获取最后一个输入,然后将其移动到数组的前面。另外请注意,队列必须基于字符串数组。请看我到目前为止的代码,也许你们中的一些人可以帮忙

public class Queue {
static String qitems[] = new String[7];
static int front = 0, end = 0;

 void addqueue(String name) {

    System.out.println("Enter Queue Item :");
    qitems[end] = name;
    end++;
    if(end==5){
         takequeue(name);
    }
 }

 void takequeue(String name) {
     qitems[front]=name;
    if (end > front) {
        System.out.println("Item taken :" + qitems[front]);
        front++;
    } else {
        System.out.println("Empty queue");
    }
}

 void displayqueue() {
    System.out.println("Queue display: ");
    for (int look = front; look < end; look++) {
        System.out.println(" " + qitems[look]);





        System.out.println("end"+end);
    }
    System.out.println("");
}
公共类队列{
静态字符串qitems[]=新字符串[7];
静态int前端=0,端部=0;
void addqueue(字符串名称){
System.out.println(“输入队列项目:”);
qitems[end]=名称;
end++;
如果(结束==5){
takequeue(姓名);
}
}
void takequeue(字符串名称){
qitems[前面]=名称;
如果(结束>前){
System.out.println(“获取的项目:+qitems[前面]);
前端++;
}否则{
System.out.println(“空队列”);
}
}
void displayqueue(){
System.out.println(“队列显示:”);
for(int look=front;look
添加队列()似乎有逻辑缺陷。在检查if(end==5)之前,end的值增加1。当end的值变为6时,if语句被忽略,takequeue()方法未被调用,您将面临此问题。要解决此问题,请在end++之前添加if语句

void addqueue(String name){ 
    System.out.println("Enter Queue Item :"); 
    qitems[end] = name; 
    if(end==5){ 
        takequeue(name); 
    } 
    end++;
}
或者检查end>=5而不是end==5,如下所示:

void addqueue(String name){ 
    System.out.println("Enter Queue Item :"); 
    qitems[end] = name; 
    end++;
    if(end>=5){ 
        takequeue(name); 
    } 
}


p.S.下次提问时,请在问题描述中使用适当的标点符号,使问题更加准确和清晰。另请参阅常见问题解答中的“如何提问”部分。

该问题有很多错误。标题数组字符串队列和标记队列使其具有高度误导性。队列完全不同于另外,您不应该将类命名为Queue,因为它是Java库中提供的一个接口。(我已经提交了一个建议的编辑。请注意。)