Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

InputMismatchException

Olá, gostaria de saber como eu faria para um código voltar para linha anterior e pedir uma nova inserção do tipo correto, exemplo:

Supondo que já importei o java.util.Scanner e fiz a instanciação dele no meu método main como seria a parte do catch para fazer este loop até o tipo correto ser inserido:

Sei que é meio boba a pergunta, mas é uma curiosidade que não encontrar uma resposta por conta própria. (E é um pouco relacionado com a parte 4 do curso java que estou em andamento).

//códigos acima...
Scanner input = new  Scanner(System.in);

try{
    int valor = input.nextInt();
} catch (InputMismatchException ex){
    //o que seria posto aqui?
}
1 resposta
solução!

Olá Jocy!

Para isso, você pode implementar um laço de repetição que envolva todo o bloco do try/catch. Alguns exemplos:

Usando while com variável booleana:

boolean valorNaoLido = true;
while (valorNaoLido) {
    try {
        int valor = input.nextInt();
        valorNaoLido = false;
    } catch (InputMismatchException ex) {
        input.next(); // Pula o valor anteriormente digitado, que ainda está no buffer
    }
}

Usando while com break:

while(true) {
    try {
        int valor = input.nextInt();
        break;
    } catch (InputMismatchException ex) {
        input.next();
    }
}

Usando for com número máximo de 5 tentativas:

for (int tentativas = 0; tentativas < 5; tentativas++) {
    try {
        int valor = input.nextInt();
        break;
    } catch (InputMismatchException ex) {
        input.next();
    }
}

Nesse caso não existe uma forma "certa" de se resolver isso, você pode ser criativo e implementar o que você preferir e o que fará atingir seu objetivo, mas sempre lembrando de manter o código o mais limpo possível.

Espero ter ajudado :)