Buongiorno a tutti,
in un ciclo do-while utilizzo un "cestino" per cattuare quel valore in più che vaga tra i circuiti quando si genera un errore. Nel mio caso, se inserisco un valore diverso da int, entro nel blocco catch ed elimino cio che ho inserito da tastiera:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Esercizio004 {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int numero = 0;
int max = 0;
String risposta = null;
do {
try {
System.out.print("\nInserisci un numero intero: ");
numero = in.nextInt();
if (numero > max) {
max = numero;
}
} catch (InputMismatchException e){
System.out.print("\nHai inserito un valore errato!");
}
do {
in.nextLine(); // <----CESTINO
System.out.print("\nVuoi inserire un altro numero? (Y/N) ");
risposta = in.nextLine().toUpperCase();
} while (!risposta.equals("Y") && !risposta.equals("N"));
} while (risposta.charAt(0) != 'N');
System.out.printf("Il valore massimo inserito è: \"%d\"", max);
}
}
Il problema è il seguente: dopo aver inserito il valore corretto il programma mi chiede: vuoi inserire un altro numero? Se rispondo Y o N funziona tutto alla perfezione ma se inserisco un valore diverso, il "cestino" mi mangia la risposta "sbagliata" e non mi fa riapparire immediatamente la domanda ...Y o N ?.
Mi date qualche suggerimento per cortesia?
Grazie