gpt4 book ai didi

java - 尽管条件仍然成立,但循环不会继续

转载 作者:行者123 更新时间:2023-12-02 03:12:35 25 4
gpt4 key购买 nike

我的任务是创建一个银行模拟。到目前为止,我所取得的进展是生成随机的 Client 对象,制作 4 个 Teller 对象,将 Client 对象放入循环队列中,如果有的话,将 Client 放入空的 Teller 中。

我现在遇到的问题是,即使设置的条件仍然为真,我所做的while循环也不会继续,它只能执行5次。但程序仍然运行。

这是我到目前为止的代码(假设所有变量都已声明):

public void run() {
int counter = 1;
populateTellers(windowArray);
while (counter < 10) {
newClient = generateClient();

System.out.println(newClient.toString() + " arrived at :" + counter);
System.out.println();

clientQueue.enqueue(newClient);
clientList.add(newClient);
System.out.println("The Queue now contains " + clientQueue.numberOfOccupiedCells() + " Client(s):");
for (int x = 0; x < clientList.size(); x++) {
System.out.println(clientList.get(x).toString());
}
System.out.println();

arrayIndex = getATeller(windowArray);
if (arrayIndex != -1) {
clientList.remove(0);
clientQueue.dequeue();
windowArray[arrayIndex].setClient(newClient);
windowArray[arrayIndex].setServiceTime(newClient.getDuration());
System.out.println(windowArray[arrayIndex].getName() + " now serves " + newClient.toString());
} else {
for (int x = 0; x < clientList.size(); x++) {
if (windowArrray[arrayIndex].getServiceTime() == counter) {
windowArray[arrayIndex].setClient(new Client());
System.out.println(windowArray[arrayIndex].getName() + " ends service for " + newClient.toString());
}
}
}
counter++;
}
}

我无法理解的一件事是,当我从 aI = getATeller(wA); 中删除代码时,直到其下面的 if 语句的右括号为止,程序将工作。我尝试将 block 放入方法中,更改 if(){} 和 else{} 内代码的位置并将条件更改为 if(aI==1),但我仍然得到没有任何改进。知道我做错了什么吗?

编辑:因此,每当我将值分配给出纳员的服务时间就会出现问题,我检查了我的出纳员类,那里没有错误。有什么想法可以解决这个问题。

最佳答案

为什么只执行了5次?根据代码,counter 用于检查是否应该继续循环。 counter 唯一发生更改的情况是最后一行:counter++

我猜你在计数器上做了一个System.out.print,它最终达到了5,然后它神奇地停止了。最有可能的是它抛出了一个异常,该异常没有被捕获,并且丢失在了空白中。

编辑:如果这段代码正在另一个线程上运行,那么它可能卡在某个函数上。照做told here

关于java - 尽管条件仍然成立,但循环不会继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com