如何在此方法中使用布尔变量退出 while for 循环?

问题描述 投票:0回答:2

我有一个方法可以找到队列中特定元素的位置并返回该位置。我通过使用 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)

java loops boolean queue exit
2个回答
0
投票

你总是可以使用下面的方法

while (node != null) {
            if (node.getElement().equals(element)) {
                System.out.println(n);
                break;
            }
            n++;
            node.getNext();
        }

0
投票

取决于您要退出的条件。在这段代码中,你说直到节点为空,继续迭代和打印。因此,如果节点不等于 null,它将继续迭代,相反我建议您在 while 循环之外取一个布尔值。获得所需数据后,无论您的目标是什么,都将布尔值设置为 true/false。 例子: 布尔值 = false;

while(!found){
//Your code for dessired result, when result is received,
found = true;
}
© www.soinside.com 2019 - 2024. All rights reserved.