import javax.swing.JOptionPane; public class Leggi { public static void emettiMessaggio( String richiesta ) { JOptionPane.showMessageDialog( null, // esposiz. del diagnostico richiesta ); } public static String leggi( String spiegazione ) { return JOptionPane.showInputDialog( "Mi dai una stringa " + spiegazione + " ?"); } public static Integer leggiInt( ) { String s; s = JOptionPane.showInputDialog( "Mi dai un numero intero?"); if ( s == null ) return null; try { int n = Integer.parseInt( s ); return n; // Qui sotto, se la stringa fornita non e` l'espressione decimale // di un numero intero, intercettiamo l'eccezione scagliata da // Integer.parseInt(_) e la saniamo con una chiamata ricorsiva. } catch ( NumberFormatException e ) { emettiMessaggio( // esposiz. del diagnostico "Per argomento mi aspetto un intero" ); } return leggiInt( ); } public static Long leggiLong( ) { String s; s = JOptionPane.showInputDialog( "Mi dai un numero intero?"); if ( s == null ) return null; try { long n = Long.parseLong( s ); return n; // Qui sotto, se la stringa fornita non e` l'espressione decimale // di un numero intero, intercettiamo l'eccezione scagliata da // Integer.parseInt(_) e la saniamo con una chiamata ricorsiva. } catch ( NumberFormatException e ) { emettiMessaggio( // esposiz. del diagnostico "Per argomento mi aspetto un intero" ); } return leggiLong( ); } public static void main(String[] argv) { Integer n; // N.B.: Si tratta della classe wrapper del tipo int while ( (n = leggiInt()) != null ) { emettiMessaggio( // esposiz. del responso "Ho letto: " + n ); } emettiMessaggio("Ciao, torna quando vuoi"); } }