我有一个做,而如下:

User user = userDao.Get(1);

do
{
 // processing


 // get the next user
 //
 user = UserDao.GetNext(user.Id);

 if(user == null)
       continue;   // will this work?????????????
}
while ( user != null)

如果它不工作,它要去do语句的顶部,用户是空,因此事情会打破?

也许我应该返工的循环,while语句?

有帮助吗?

解决方案

在继续使得跳转到评价在钮,以便该程序能够评估其是否具有继续另一次迭代或退出。在这种情况下,它将会退出。

这是本说明书中: HTTP:// java的.sun.com /文档/书籍/ JLS / third_edition / HTML / statements.html#6045

这样的语言问题,你可以搜索它在Java语言规范:的http:// java的。 sun.com/docs/books/jls/

其他提示

这真的不会写这个代码的最佳方式。如果用户是零,你会当您试图得到一个NullPointerException异常和周围得到user.id的下一次。一个更好的办法来做到这一点是:

User user = UserDao.Get(1);
while(user != null) {
  // do something with the user
  user = UserDao.GetNext(user.id);
}

你为什么要在两个地方测试用户?当用户为空,这是你想要的,而条件将终止循环。

是,continue将在do..while循环工作。

您可能需要使用break而不是continue停止处理用户,或者只是删除if null continue位完全因为while循环会尽快摆脱作为用户是空呢。

简短的回答是,继续(并打破)在do-while循环正常工作。

正如其他人所指出的,虽然,从例如,它看起来像你可以期望从继续错误的行为。

让我们来看看:

$cat DoWhileContinue.java 
class DoWhileContinue {

    public static void main( String [] args ) {
        int i = 0;
        int y = 0;
        do {
            i++;
            if( i > 100 ) {
                continue;
            }
            y++;

        } while( i < 500  );
        System.out.printf("i=%d, y=%d %n", i, y );
    }
}
$javac DoWhileContinue.java 
$java DoWhileContinue
i=500, y=100 

是它。在此示例中可以看到y值是100因为continue语句被执行和被后来增加防止变量。

在继续将跳转到环路评价声明看起来多余的,因为你如果同时正在评估同样的事情,而里面。我认为这将是更好地使用中断或干脆让while条件做的工作(你的病情时已经检查它为你)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top