首先,我想说明的是,我是一个初学者与例外,因此我有麻烦。
我正在编写一段代码,它试图使用try catch来检测一个数字是否是整数。因此,如果用户输入的不是整数,比如字母'a',我希望代码会要求输入另一个值。换句话说,对于任何不是整数的东西,我想让用户输入另一个值。
代码1:
我尝试过使用一个检测器来检测用户输入是否为和整型
static Scanner kbd = new Scanner(System.in);
public static void LecturaValidada(){
int n;
int esEntero=-1;
while(esEntero<=0){
try{
System.out.print("Introduce un valor: ");
n = kbd.nextInt();
esEntero=1;
} catch(InputMismatchException e){
System.out.println("Usted ha introducido un caracter/frase, no un entero.");
esEntero=-1;
} catch(NumberFormatException e){
System.out.println("Usted ha introducido un número que no es un entero.");
esEntero=-1;
}
}
System.out.println("Usted SI ha introducido un entero.");
}
代码2:与代码1相同,但使用do while
public static void LecturaValidada(){
int n;
int esEntero=-1;
do{
try{
System.out.print("Introduce un valor: ");
n = kbd.nextInt();
esEntero=1;
} catch(InputMismatchException e){
System.out.println("Usted ha introducido un caracter/frase, no un entero.");
esEntero=-1;
} catch(NumberFormatException e){
System.out.println("Usted ha introducido un número que no es un entero.");
esEntero=-1;
}
} while(esEntero == -1);
System.out.println("Usted SI ha introducido un entero.");
}
我也一直在玩布尔值
最后,我得到2个输出中的1个:
- 输出1:它将检测到用户输入的值不是整数,并且它不会要求另一个值
- 输出2:它将不断显示此消息:“介绍一种勇气:Usted ha introducido un caracter/frase,no un entero.”
3条答案
按热度按时间ymdaylpp1#
下面是处理此问题简单代码
daupos2t2#
我同意@Vasim Hayat的回答。还有一个替代的解决方案,不使用while循环,而是使用递归(自己调用同一个方法):
wgeznvg73#
您必须使用nextInt()调用留下的nextline字符。
看到这个How can I clear the Scanner buffer in Java?