WHILE 循环条件不验证输入
WHILE Loop Condition Does Not Validate Input
我有一个 WHILE
循环来检查特定学生的分数。但是,如果值无效(输入小于0且大于100),则不循环:
int marks= -1;
System.out.print("Student Marks (/100): ");
while (((marks< 0) || (marks> 100))) {
try {
marks = Integer.parseInt(sc.nextLine());
break;
} catch (NumberFormatException nfe) {
System.err.println("Error: Invalid Mark(s)");
System.out.print("Student Marks (/100): ");
}
}
如果输入数字以外的字符,它会捕获异常。
但如果值小于 0 或大于 100,则不会再次循环。
我已经尝试对其进行许多更改但没有结果。
感谢您提供的任何帮助!
您应该删除 break
语句,因为无论输入什么 marks
值,它都会使您跳出循环。
您可以使用 if
条件检查 while
循环中的 marks
,在这里您可以使用 break
-
import java.util.Scanner;
public class TakeInput{
public static void main(String args[]){
int marks= -1;
Scanner sc = new Scanner(System.in);
System.out.print("Student Marks (/100): ");
while (sc.hasNext()) {
try {
marks = Integer.parseInt(sc.nextLine());
if(marks<0 || marks>100){
break;
}
//do something
// with the marks
//take new marks
System.out.print("Student Marks (/100): ");
} catch (NumberFormatException nfe) {
System.err.println("Error: Invalid Mark(s)");
System.out.print("Student Marks (/100): ");
}
}
}
}
现在只要在n<0 || n>100
时输入除数字n以外的任何内容就会继续循环。任何 NumberFormatExeption
带你到 catch
块。
如果您输入 34,那么它将转到 while 块并提示输入下一个数字。
然后如果你输入 56 那么它会做同样的事情。
当您输入任何 String
而不是数字时,它会进入 block
此过程一直持续到您输入无效数字 (n>100 || n<100)。按 Ctrl+C 也会退出循环。
希望对您有所帮助。
非常感谢。
如果您想保持循环,请始终使用 continue 而不是 break 运行。
我有一个 WHILE
循环来检查特定学生的分数。但是,如果值无效(输入小于0且大于100),则不循环:
int marks= -1;
System.out.print("Student Marks (/100): ");
while (((marks< 0) || (marks> 100))) {
try {
marks = Integer.parseInt(sc.nextLine());
break;
} catch (NumberFormatException nfe) {
System.err.println("Error: Invalid Mark(s)");
System.out.print("Student Marks (/100): ");
}
}
如果输入数字以外的字符,它会捕获异常。
但如果值小于 0 或大于 100,则不会再次循环。
我已经尝试对其进行许多更改但没有结果。
感谢您提供的任何帮助!
您应该删除 break
语句,因为无论输入什么 marks
值,它都会使您跳出循环。
您可以使用 if
条件检查 while
循环中的 marks
,在这里您可以使用 break
-
import java.util.Scanner;
public class TakeInput{
public static void main(String args[]){
int marks= -1;
Scanner sc = new Scanner(System.in);
System.out.print("Student Marks (/100): ");
while (sc.hasNext()) {
try {
marks = Integer.parseInt(sc.nextLine());
if(marks<0 || marks>100){
break;
}
//do something
// with the marks
//take new marks
System.out.print("Student Marks (/100): ");
} catch (NumberFormatException nfe) {
System.err.println("Error: Invalid Mark(s)");
System.out.print("Student Marks (/100): ");
}
}
}
}
现在只要在n<0 || n>100
时输入除数字n以外的任何内容就会继续循环。任何 NumberFormatExeption
带你到 catch
块。
如果您输入 34,那么它将转到 while 块并提示输入下一个数字。
然后如果你输入 56 那么它会做同样的事情。
当您输入任何 String
而不是数字时,它会进入 block
此过程一直持续到您输入无效数字 (n>100 || n<100)。按 Ctrl+C 也会退出循环。
希望对您有所帮助。
非常感谢。
如果您想保持循环,请始终使用 continue 而不是 break 运行。