Se devi controllare che l'utente non scriva castronerie, allora l'approccio è diverso:
1) Leggi sempre tutto come Stringa.
2) Effettua i controlli di consistenza.
3) Se c'è un errore nell'input, richiedilo nuovamente all'utente
codice:
int variabile = -1; // come prima
System.out.println("Inserire il valore numerico: ");
while(variabile <= 0) {
// Mai fidarsi dell'utente: tratto una stringa, così sono sicuro
// di pulire il buffer anche dalle eventuali castronerie
String lettura = scrivi.nextLine();
// Verifico se ciò che mi è arrivato è un numero oppure no
try {
variabile = Integer.parseInt( lettura );
} catch (NumberFormatException nfe) {
// Ahi: l'utente ha scritto qualcosa che non è un numero
// Per me è come se avesse scritto un numero negativo, cioè un dato non valido
variabile = -1; // non serve, ma è utile per capire
}
// Eventuali altri controlli sul dominio di "variabile"
...
}
// Se arrivo qui, variabile è un numero maggiore di 0... lo uso
...
Ciao.