目前,我有这个:
do{
if (i < y){ //y is a constant
ObsHandler.obsPartsHandler(); //increment i twice
ObsHandler.search();
}
else {
break;
}
} while (!endline.equals(null)); // endline is changed during each loop cycle
Run Code Online (Sandbox Code Playgroud)
通过这个循环和我的输入,endline不能为null; 这使得while循环破坏条件变得多余.当我尝试将此循环转换为for循环时,我从Eclipse中得到了错误的构造错误.
即:
for (i < y) {
ObsHandler.obsPartsHandler(); //increment i twice
ObsHandler.search(); }
Run Code Online (Sandbox Code Playgroud)
虽然,我工作的while循环,对我来说似乎是不好的做法.有什么建议?谢谢.
如果要使用for循环,则需要包含标准的所有三个部分for.由于您有两个条件,因此它们必须包含在条件部分中:
for ( ; i < y && !endline.equals(null); ) {
ObsHandler.obsPartsHandler();
ObsHandler.search();
}
Run Code Online (Sandbox Code Playgroud)
您可能有一些初始化代码i,例如i=0,它们也可以进入for循环的初始化部分.否则,如果您只有一组条件要检查而没有某些数组或列表,那么您正在迭代,while或者do实际上更适合.
如果您不需要检查endLine,您仍然可以使用while循环:
while (i < y) {
ObsHandler.obsPartsHandler(); //increment i twice
ObsHandler.search();
}
Run Code Online (Sandbox Code Playgroud)
如果你还需要检查endLine:
while (i < y && !endline.equals(null)) {
ObsHandler.obsPartsHandler(); //increment i twice
ObsHandler.search();
}
Run Code Online (Sandbox Code Playgroud)
注意:do/while(您的初始代码)和while {}之间的区别在于,在第一种情况下,循环始终至少运行一次.使用while {},如果条件在开头不为真,则根本不运行.这与for循环的行为相同(如果在循环之前条件为false,则不会运行).