Salve, ho questo metodo per acquisire dati da riga di comando, invocato con la visualizzazione di un testo msg che indica il dato da inserire.

codice:
public static int leggiInt(String msg) {
   int res = 0;   Scanner input = new Scanner(System.in);
   boolean ok = false;
   while (!ok) {
      try {
          System.out.print(msg);
		res = Integer.valueOf(input.next());
		ok = true;
      } catch (Exception e) {
          System.out.println("Occorre immettere un numero intero");
          ok = false;
      }
   }
return res;
}
Funziona nel controllare che il dato inserito sia di tipo int, ma non controlla l'immissione di valori negativi che non hanno senso nel contesto dell'applicazione... Posso ovviare assegnando a res il valore assoluto del numero immesso ma vorrei invece invitare l'utente a inserire un numero positivo.
Ho provato a inserire qualcosa tipo if (Integer.valueOf(input.next()) > 0) ma questo causa un malfunzionamento del metodo main(), dato che in console non viene stampato il testo msg che invita a inserire un numero intero.

Il file importa java.io.IOException e il metodo main() prevede un throws IOException.