题
我有一个做,而如下:
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条件做的工作(你的病情时已经检查它为你)
不隶属于 StackOverflow