Não é possível descobrir como capturar InputMismatchException

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(); } }