我有一个try-catch,用于捕获任何不是整数的东西。当我输入一个非整数(例如5.6)时,它告诉我只允许整数,让我再试一次(应该这样)。但如果我再次输入一个非整数,它就不会说任何东西,并且会继续输入,使输出空白。
textConnection
答案 0 :(得分:4)
try/catch
语句不是循环。它将始终执行一次。
当然,如果try
块中有一个循环,那么该块将一直执行直到终止。但是这样的循环需要使用像while
或for
这样的显式命令。
显然,输入非整数值(例如5.6)时会发生nextInt()
语句抛出异常并转到catch
块。如果提供了该方法的完整代码,则可以给出更好的解释。
答案 1 :(得分:3)
为此你可以定义一个函数,这样的东西应该可以工作
private int getNextInt(Scanner input) {
boolean isInt = false;
int userInput;
while(!isInt) {
try {
userInput = Integer.valueOf(input.next());
isInt = true;
} catch(NumberFormatException e) {
// Do nothing with the exception
}
}
return userInput;
}
这应该运行,直到给定的输入为int,然后返回所述int
答案 2 :(得分:1)
您可以将代码更新为类似的内容 -
Scanner in = new Scanner(System.in);
int num = 0;
while(true) {
try{
num = in.nextInt();
break;
}catch(Exception e){
//print statements
System.out.println("Try again");
}
}
System.out.println("Done");
答案 3 :(得分:1)
类似这样的事情
Boolean check = true;
while(check){ 如果choicesObjects == b {
在此输入代码`System.out.println(" TEST 2");
System.out.println("对象:右三角");
System.out.println(" \ n输入直角三角形的长度:");
int lengthOfTriangle = 0;
try {
lengthOfTriangle = input.nextInt();
} catch(InputMismatchException e) {
System.out.println("\nError: user input must be an integer greater than 0.\n");
check = false;
System.out.println(" Object:Right triangle"); System.out.println(" \ n输入直角三角形的长度:"); input.next();
}
//method stuff
}
}
`