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.