繁体   English   中英

Java-闯入while循环不起作用

[英]Java - break in while loop does not work

我有这样的代码

while(setIterator.hasNext()){
    String key = setIterator.next();

    if(key.equalsIgnoreCase("location_id")){
        containlocationid = true;

        int id_key = Integer.parseInt(requestMap.get(key));

        if(player.isLocationExists(id_key) == true){
            player.setlocationID(Integer.parseInt(requestMap.get(key)));
            responseOut.println("NOW WILL NOT BREAK AND SAVE");
        }else{
            responseOut.println("NOW WILL BREAK AND NO SAVE");
            break;
        }
    }else if(key.equalsIgnoreCase("name")){
        player.setName(requestMap.get(key));
        responseOut.println("this is inside NAME");
    }else if(key.equalsIgnoreCase("description")){
        player.setDescription(requestMap.get(key));
        responseOut.println("this is inside DESCRIPTION");
    }
}

当获取布尔值“ false”时,while循环将中断并显示“现在将中断且不再保存”。 但是现在我得到这样的结果

this is inside NAME <- this will not print out after break while loop
this is inside DESCRIPTION <- this will not print out after break while loop
NOW WILL BREAK AND NO SAVE

表示保存成功,但中断无效。我尝试了“ Outer:”和“ break Outer;”。 功能,但也失败了。

希望您理解我在说什么,请帮助,谢谢!

现在将无法保存

是输出中的最后一条语句。 之后没有其他语句被打印,这清楚地表明执行else子句后while循环已终止。 循环终止将仅由于以下两个原因而发生:

  • while循环条件,即setIterator.hasNext()返回false
  • break语句已执行(对我来说似乎更可能)

您也可以简单地将if(player.isLocationExists(id_key) == true)替换为if(player.isLocationExists(id_key))

您正在看到预期的结果。 break中断循环,而不是if else子句。 如果代码到达现在打印的位置,它将NOW WILL BREAK AND NO SAVE ,它将永远不会尝试其余的else子句。

也许您正在寻找continue 它将仅中断循环的当前迭代。 -edit-但是,在您的情况下完全没有必要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM