当我调用我的 toString() 方法时,如果在索引环绕(前面)之后,它不起作用
public class driver {
public static void main(String[] args) {
Queue queue = new Queue(4);
System.out.println(queue);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
System.out.println(queue);
queue.dequeue();
System.out.println(queue);
queue.dequeue();
System.out.println(queue);
queue.enqueue(5);
queue.enqueue(6);
System.out.println(queue);
}
public static class Queue {
int front;
int rear;
int capacity;
int[] queue;
public Queue(int size) {
this.capacity = size;
this.front = this.rear = -1;
this.queue = new int[capacity];
}
@Override
public String toString() {
String str = "";
if (front > rear) {
int i = front;
while (i != rear) {
str = str + queue[i % queue.length] + " ";
i++;
}
//str= str+queue[rear];
}
if (front < rear) {
for (int i = front; i <= rear; i++) {
str = str + queue[i];
}
}
if (front == rear) {
str = "This Queue is Empty. Please Enqueue";
}
return str;
}
public boolean isFull() {
return ((rear == this.queue.length - 1 && front == 0) || rear == front - 1);
}
public boolean isEmpty() {
return (front == -1);
}
public void enqueue(int elem) {
if (isFull()) {
System.out.println("Full Queue - dequeue an element if you need to add an element in the queue");
} else {
if (isEmpty()) {
this.queue[++rear] = elem;
front = 0;
} else {
rear = (rear + 1) % this.queue.length;
this.queue[rear] = elem;
}
}
}
public int dequeue() {
if (isEmpty()) {
System.out.println("empty queue. Enqueue some elments. ");
return -1;
} else {
int store = this.queue[front];
if (rear == front) {
front = rear = -1;
} else {
front = front + 1 % this.queue.length;
}
return store;
}
}
}
*这里也有一个返回的花括号,lol仍然是发布问题的新手。P、 S有人能帮我吗?因为显然我在问题中发布了太多代码。有什么变通办法吗?
问题是toString的time循环中的i
。
考虑< code>front = 3和< code>rear = 1的情况,然后从< code>i = front = 3开始循环。但是,您会一直递增,直到达到< code>i == rear,这种情况从< code>rear开始就不会发生了
一旦达到< code >容量,您希望< code>i循环回到< code>0。您可以通过删除< code>i 并用< code>i = (i 1) % capacity替换它来实现这一点;
看起来您的代码中有一个不同的bug,因为当我运行它时,我看到
This Queue is Empty. Please Enqueue
1234
234
34
3 4 5
你需要自己弄清楚这一点。
您甚至可以将其压缩为单个for语句
for(int i = front; i != rear; i = (++i) % capacity)
项目中经常会生成一些Git系统不需要追踪(track)的文件。典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件。当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中。 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时
问题内容: 我正在编写的Python程序将从文件顶部读取一定数量的行,并且该程序需要保留此标头以备将来使用。目前,我正在做类似以下的事情: Pylint抱怨我没有使用该变量。什么是更pythonic的方式做到这一点? 编辑:该程序的目的是将原始文件智能地拆分为较小的文件,每个文件都包含原始标头和数据的子集。因此,在读取文件的其余部分之前,我只需要读取并保留标题。 问题答案: f = open(‘f
假设我有一个大小为[10]的数组,当该数组被填满时,我想实现一个FIFO结构,而不是它只是填满了,因此无法向数组中添加新的东西,并抛出旧的东西。 例如,如果我有一个包含汽车制造商的字符串数组,当我的数组中有10个制造商时,我希望删除最旧的条目,添加最新的条目,但要考虑kepping FIFO。我如何在这样的方法中实现它:
我正在制作一个不和谐机器人来跟踪在语音频道上花费的时间,但我想知道我是如何做到的,它不计算在某个频道上的成员的时间,比如afk频道。 这是我现在正在使用的事件
我想知道是否可以使用此方法忽略字段,因为我有一个要忽略的字段列表,在同一个类中,那么我该如何做呢? 我正在使用 谢谢
我有我的OAuth服务器和客户端,它是由Oauth2授权的。 现在,如果我需要呼叫我的服务,我需要: > 使用以下API从服务器生成访问令牌: < code > localhost:9191/oauth/token?grant _ type =密码 其给出如下响应: 现在我正在传递访问令牌,以运行客户端服务,如下所示: 我需要跳过控制器的身份验证。我该怎么做?有人能帮忙吗 我的WebSecurit