你有条件倒退!在条件为真时while
执行,直到条件为真......所以,你需要做的是:
int marks = -1; // Start with an "illegal" marks value
while ((marks<0) || (marks>100)) { // while we have an illegal mark ...
System.out.println("Enter Students Test Marks Here (0..100)");
marks = input.nextInt(); // ... ask for a new one
}
在此之后,您的标记变量包含 0 到 100 之间的有效数字。
编辑:
我刚刚注意到......在用户输入正确的值之前,您没有询问提示用户,而是运行程序直到他输入错误的值并且仅仅阻止分配给Marks
变量......如果这确实是你之后,您可以这样做:
int marks = 0;
while (true) { // Just keep running
System.out.println("Enter Students Test Marks Here (<0 or >100 to quit)");
int newMark = input.nextInt();
if ((newMark<0) || (newMark>100)) break; // Skip out of while loop
marks = newMark; // Only happens if newMark is between 0 and 100
}
您还可以将break
部分替换return
为不仅退出 while 循环,还退出调用它的函数,或者System.exit(0)
如果您想立即退出程序,甚至可以退出。
但诀窍是在将输入分配给标记之前使用临时变量来检查输入。
(顺便说一句:作为惯例,Java 中的变量名通常以小写字母开头......)