为什么在循环后紧跟着分号(;
)使用while循环?
我以以下代码为例:
public static void Register()
{String name,code;
int posStudent,posCourse;
System.out.println("-----------------------------------------------");
System.out.println("Enter the name of the student");
name=in.next();
while ((posStudent=VerifyTheStudentName(name))==-1);
System.out.println("-----------------------------------------------");
System.out.println("The list of available courses is:");
for(int i=0;i<courses.size();i++)
System.out.println(courses.get(i));
System.out.println("-----------------------------------------------");
System.out.println("Enter the course code");
code=in.next();
while((posCourse=VerifyTheCourseCode(code))==-1);
students.get(posStudent).registerTo(courses.get(posCourse));
}
那么在这里做什么呢?
答案 0 :(得分:5)
如果while条件完成所有“工作”,则不需要循环主体。
答案 1 :(得分:2)
使用分号分隔的while或for循环是空的循环。所有工作均由循环条件逻辑/迭代逻辑完成。所以
while ((posStudent = verifyTheStudentName(name)) == -1);
等同于
while ((posStudent = verifyTheStudentName(name)) == -1) {
}
请不要以空的方式编写循环。读者很容易就不会注意到分号,而认为后面的语句应该是循环体。
那么,该语句是什么意思?
verifyTheStudentName(name)
返回-1
时循环。posStudent
中捕获它。在这样的条件中捕获值是一种很常见的习惯用法...
但是,有理由怀疑此示例代码可能不正确。 (如果您在相同的参数上重复调用相同的函数,则每次都希望得到相同的结果,从而导致潜在的无限循环。但这确实取决于上下文...)