Java - while循环中断不起作用

时间:2014-04-23 09:49:09

标签: java mysql servlets

我有这样的代码

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");
    }
}

当得到布尔值"假"时,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

意味着它成功保存并且休息不起作用。我尝试了&#34;外部:&#34; &安培; &#34;打破外面;&#34;功能但也失败了。

希望你明白我在说什么,请帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

  

现在会破裂而且不会保存

是输出中的最后一个语句。之后不会打印其他语句,这清楚地表明while循环在执行else子句后已终止。 循环终止只会因为两个原因而发生:

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

您也可以使用if(player.isLocationExists(id_key) == true)

替换if(player.isLocationExists(id_key))

答案 1 :(得分:0)

您正在看到预期的结果。 break打破循环,而不是if else子句。如果 代码到达它永远不会打印NOW WILL BREAK AND NO SAVE的点 尝试剩余的else条款。

也许您正在寻找continue?它只会打破当前的迭代 循环。 -edit-但是,在你的情况下完全没有必要。

相关问题