gpt4 book ai didi

java - continue 不能在循环外使用(实际上不在循环外)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:08 25 4
gpt4 key购买 nike

我不明白为什么 continue 在这里会导致错误

public void clear() {

log.debug("Clearing hash");

// wow!
while( hash.size()>0 ) {

for(Map.Entry<Node,Node> entry : hash.entrySet()) {

clearingParents: {

while( entry.getKey().ups.size() > 0 ) {

for(Node node : entry.getKey().ups) {

log.debug("Clearing {}, hash size is {}", node, hash.size());
if( node.sizeUps() == 0 ) {
node.clear();
continue clearingParents;
}
else {
log.debug("was skipped since inserted");
}
}

break clearingParents;
}
}

}


}

我正在使用这个方案,因为 node.clear() 导致迭代器出现故障

最佳答案

你标记一个 block 而不是 while 循环。你可以break out of a labeled block 但不能continue labeled blockcontinue a labeled block 没有意义,因为它不是循环像下面这样标记你的循环

  clearingParents:  while( entry.getKey().ups.size() > 0 ) {

for(Node node : entry.getKey().ups) {

log.debug("Clearing {}, hash size is {}", node, hash.size());
if( node.sizeUps() == 0 ) {
node.clear();
continue clearingParents;
}
else {
log.debug("was skipped since inserted");
}
}

break clearingParents;
}

关于标记循环的研究 here

关于java - continue 不能在循环外使用(实际上不在循环外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157324/

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