您有条件倒退! 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
编辑:
我只注意到...你并没有问,提示用户,直到他进入正确的值,但直到他进入AW运行程序荣价值,而仅仅防止分配到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
}
您还可以return
代替break
部分退出,不仅同时循环,但它的功能,或者甚至可能是System.exit(0)
,如果你想立即退出程序。
但诀窍是在分配标记之前使用临时变量来检查输入。
(BTW:作为惯例,在Java中的变量名一般用小写字母开头...)
没有类型为'Int'在Java中。 –
你必须指定错误:编译或运行时,它的文本等 –
在你的循环条件下,只有当它超过100或低于0时才会打印“标记”,否则你的循环将不会停止。 – Leiaz