Então aqui está o meu código atual para pegar um erro InputMismatchException
int weapon = 0 boolean selection = true; while(selection) { try { System.out.println("Pick number 1, 2, or 3."); weapon = scan.nextInt(); selection = false; } catch(InputMismatchException e) { System.out.println("Choose 1,2,3"); weapon = scan.nextInt(); } }
Eu estou tentando se certificar de que um int é inserido e não qualquer outra coisa. A class do scanner já foi implementada e ‘scan’ irá agir como para mim.
Obrigado por todos os esforços para ajudar!
Tente isto:
int weapon = 0; do{ System.out.println("Pick number 1, 2, or 3."); if(scan.hasNextInt()){ weapon = scan.nextInt(); break; }else{ System.out.println("Enter an integer only"); scan.nextLine(); } }while(true);
Isso fará com que seja um número inteiro e continuará perguntando até conseguir.
Em primeiro lugar, você já tem um loop com o qual solicitar e verificar o int
desejado. Você não precisa duplicar esse comportamento em seu manipulador de exceções. O que você precisa fazer, no entanto, é descartar o token incompatível do scanner para permitir a digitalização de um novo.
Como uma questão secundária, sua variável de selection
parece ser redundante.
Parece que isso pode fazer o que você está procurando:
int weapon = 0 while(weapon < 1 || weapon > 3) { try { System.out.println("Pick number 1, 2, or 3."); weapon = scan.nextInt(); } catch(InputMismatchException e) { //discard the mismatching token scan.next(); } }