Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    [PILLOLA][JAVA] Classe per la lettura dei dati primitivi da tastiera

    Ciao.
    Come richiestomi, vi posto una classe Java per la lettura di tutti i tipi primitivi da tastiera.
    I tipi primitivi di Java sono i seguenti:
    • byte (intero a 8 bit: da -128 + 127)
    • short (intero corto a 16 bit)
    • int (Intero a 4 byte)
    • long (intero lungo a 64 bit)
    • float (numero in virgola mobile a 32 bit)
    • double (numero in Floating Poin a doppia precisione 64 bit)
    • char (tipo carattere a 16 bit)
    • boolean (valore booleano, true o false)

    I tipi di dato float e double sono rappresentati secondo lo standard IEEE-754.
    Inoltre, questa classe prevede anche un metodo per la lettura di una Stringa qualsiasi.

    Questo è il sorgente della classe, potete copiarlo all'interno del vostro editor di testi e compilarlo:
    codice:
    import java.io.*;
    import java.util.StringTokenizer;
    
    public class Tastiera {
       private static InputStreamReader is = new InputStreamReader( System.in );
       private static BufferedReader br = new BufferedReader( is );
       private static StringTokenizer st;
    
       public static String leggiStringa() {
          String s = "";
    
          try {
             s = br.readLine();
          } catch (Exception e) { e.printStackTrace(); }
    
          return s;
       }
    
       public static int leggiIntero() {
          int i = 0;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Integer.parseInt( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static float leggiFloat() {
          float i = 0f;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Float.parseFloat( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static double leggiDouble() {
          double i = 0;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Double.parseDouble( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static char leggiCarattere() {
          char i = (char) 0;
    
          try {
             i = (br.readLine()).charAt(0);
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static long leggiLong() {
          long i = 0L;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Long.parseLong( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static short leggiShort() {
          short i = (short) 0;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Short.parseShort( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static byte leggiByte() {
          byte i = (byte) 0;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = Byte.parseByte( st.nextToken() );
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    
       public static boolean leggiBoolean() {
          boolean i = false;
    
          try {
             String tmp = br.readLine();
             st = new StringTokenizer(tmp);
             i = new Boolean( st.nextToken() ).booleanValue();
          } catch (Exception e) { e.printStackTrace(); }
    
          return i;
       }
    }
    Vi posto anche un esempio di utilizzo di questa classe, che deve essere presente nella cartella dell'applicazione che state realizzando, oppure linkato nella variabile d'ambiente CLASSPATH. L'esempio è banale e mostra l'utilizzo di tutti i metodi forniti dalla classe:
    codice:
    public class ProvaTastiera {
       public static void main(String [] a) {
          System.out.print("Scrivi una stringa: ");
          String s = Tastiera.leggiStringa();
          System.out.println();
          System.out.print("Scrivi un numero intero: ");
          int i = Tastiera.leggiIntero();
          System.out.println();
          System.out.print("Scrivi un numero a doppia precisione: ");
          double d = Tastiera.leggiDouble();
          System.out.println();
          System.out.print("Scrivi un valore booleano: ");
          boolean b = Tastiera.leggiBoolean();
          System.out.println();
          System.out.print("Scrivi un numero intero corto: ");
          short sh = Tastiera.leggiShort();
          System.out.println();
          System.out.print("Scrivi un numero intero lungo: ");
          long l = Tastiera.leggiLong();
          System.out.println();
          System.out.print("Scrivi un valoer byte: ");
          byte by = Tastiera.leggiByte();
          System.out.println();
          System.out.print("Scrivi un carattere: ");
          char c = Tastiera.leggiCarattere();
    
          System.out.println("Questi sono i valori digitati:");
          System.out.println();
          System.out.println("Stringa: " + s);
          System.out.println("Intero: " + i);
          System.out.println("Double: " + d);
          System.out.println("Booleano: " + b);
          System.out.println("Intero corto: " + sh);
          System.out.println("Intero lungo: " + l);
          System.out.println("Byte: " + by);
          System.out.println("Carattere: " + c);
       }
    }
    come potete notare è molto semplice da usare e non richiede l'istanziazione di alcun oggetto, dato che i metodi sono tutti statici.

    In questo modo vi potete risparmiare la procedura di creazione degli oggetti atti alla ricezione dell'input da tastiera e tutti i problemi relativi alla cattura delle possibili eccezioni.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Da parte mia grazie.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Aggiunta alle pillole
    ...Terrible warlords, good warlords, and an english song

  4. #4
    Noi a scuola ne usiamo un'altra, ConsoleMia.
    I prof l'hanno trovata da qualche parte in rete, io la metto si sa mai che a qualcuno interessi.

    codice:
    // ConsoleMia.java
    
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    /** An easy interface to read numbers and strings from standard input.
    @version 1.10 10 Mar 1997
    @author Cay Horstmann
    @see InputStreamReader */
    public class ConsoleMia extends InputStreamReader {
    
        /** Costruttore base.
        @param in Stream di input.
        */
        public ConsoleMia(InputStream in) {
            super(in);
        } // ConsoleMia
    
        /** Print a prompt on the ConsoleMia but don't print a newline.
        @param prompt The prompt string to display.
        */
        private static void printPrompt(String prompt) {
            System.out.print(prompt);
            System.out.flush();
        } // printPrompt
    
        /** Read a string from the ConsoleMia. The string is terminated by a newline.
        @return The input string (without the newline).
        */
        public static String readLine() {
            int ch;
            String r = "";
            boolean done = false;
            while (!done)
                try {
                    ch = System.in.read();
                    if (ch < 0 || (char)ch == '\n')
                        done = true;
                    else if ((char)ch != '\r') // weird--it used to do \r\n translation
                        r = r + (char) ch;
                } catch(java.io.IOException e) {
                    done = true;
                } // try-catch
            return r;
        } // readLine
    
        /** Read a string from the ConsoleMia. The string is terminated by a newline.
        @param prompt The prompt string to display.
        @return The input string (without the newline).
        */
        public static String readLine(String prompt) {
            printPrompt(prompt);
            return readLine();
        } // readLine
    
        /** Read an integer from the ConsoleMia. The input is terminated by a newline.
        @return The input value as an int.
        */
        public static int readInt() {
            return readInt("");
        } // readInt
    
        /** Read an integer from the ConsoleMia. The input is terminated by a newline.
        @param prompt The prompt string to display.
        @return The input value as an int.
        */
        public static int readInt(String prompt) {
            while(true) {
                printPrompt(prompt);
                try {
                    return Integer.valueOf(readLine().trim()).intValue();
                    // trim toglie gli spazi dalla fine
                } catch(NumberFormatException e) {
                    System.out.println("Non e` un intero; riprova!");
                } // try-catch
            } // while
        } // readInt
    
        /** Read a floating point number from the ConsoleMia.
        The input is terminated by a newline.
        @return The input value as a double.
        */
        public static double readDouble() {
            return readDouble("");
        } // readDouble
    
        /** Read a floating point number from the ConsoleMia. 
        The input is terminated by a newline.
        @param prompt The prompt string to display.
        @return The input value as a double.
        */
        public static double readDouble(String prompt) {
            while(true) {
                printPrompt(prompt);
                try {
                    return Double.parseDouble(readLine().trim());
                } catch(NumberFormatException e) {
                    System.out.println("Non e` un numero decimale; riprova!");
                } // try-catch
            } // while
        } // readDouble
    
    } // ConsoleMia

  5. #5
    io utilizzo questa che mi hanno dato con un libro...

    http://www.erroredigitale.altervista.org/SavitchIn.java

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    "BUMP!"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.