我正在创建一个程序,用户输入他们的标记,如果他们输入超过100然后程序停止,但我似乎无法停止超过100的值也被分配给Marks变量......
Scanner scan = new Scanner(System.in);
Int Marks = 0;
while (Marks >= 0 && Marks <= 100) {
System.out.println("Enter Students Test Marks Here");
Marks = input.nextInt();
}
// Output Test
System.out.println("The Marks variable value is " +Marks);
答案 0 :(得分:0)
当您输入的值大于100时,您就在里面:
while (Marks >= 0 && Marks <= 100) {
System.out.println("Enter Students Test Marks Here");
Marks = input.nextInt();}
因此,价值已分配给Marks
,即while
停止,因此会在最后一行打印:
System.out.println("The Marks variable value is " +Marks);
可能的解决方案可能是:
boolean done = true;
int marks;
while(done == true){
System.out.println("Enter Student Test Marks Here");
if(input.nextInt() <= 0 || input.nextInt() >= 100){
done = false;
}else{
marks = input.nextInt();
}
}
System.out.println("The Marks variable value is " + marks);
答案 1 :(得分:0)
这是怎么回事?
Marks = input.nextInt();
while (Marks >= 0 && Marks <= 100) {
System.out.println("Enter Students Test Marks Here");
Marks = input.nextInt();
}
答案 2 :(得分:0)
你的状况倒退了! 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中的变量名通常以小写字母开头......)