我有一个方法可以找到队列中特定元素的位置并返回该位置。我通过使用 n 计数器并每次递增来找到位置,直到找到元素并返回 n 这将是位置。但是,当我尝试执行循环时,它是无穷无尽的并且不会自行退出。我对应该在循环的哪一部分添加布尔值感到困惑。
我在这里声明了布尔变量:
public class LinkedQueue<T> implements QueueADT<T> {
boolean found=false;
private int n;
private LinearNode<T> first, last;
private LinearNode<T> T;
这是我的方法:
public int position(T element) throws EmptyQueueException, NoSuchElementException {
if (isEmpty()) {
throw new EmptyQueueException("Queue is empty");
}
LinearNode<T> node = first;
n = 0;
while (node != null) {
if (node.getElement().equals(element)) {
found = true;
System.out.println(n);
}
n++;
node.getNext();
}
return n;
循环是无休止的,这是在我必须取消运行之前计数器走了多远的片段。
142215
142216
142217
142218
142219
142220
BUILD STOPPED (total time: 3 seconds)
你总是可以使用下面的方法
while (node != null) {
if (node.getElement().equals(element)) {
System.out.println(n);
break;
}
n++;
node.getNext();
}
取决于您要退出的条件。在这段代码中,你说直到节点为空,继续迭代和打印。因此,如果节点不等于 null,它将继续迭代,相反我建议您在 while 循环之外取一个布尔值。获得所需数据后,无论您的目标是什么,都将布尔值设置为 true/false。 例子: 布尔值 = false;
while(!found){
//Your code for dessired result, when result is received,
found = true;
}