Newsgroup: it.comp.java
Titolo: [NEWBIE] Quale metodo usare per immettere dati

Ciao a tutti,
premetto che mi sto addentrando ora nella programmazione Java.
Sto leggendo un paio di libri tra cui "Laboratorio di programmazione
in Java" dove in alcuni esempi si utilizza il metodo
System.in.Read()
per leggere dati dalla console. Ma non tutto funziona a dovere,
difatti anche se uso 3 volte la funzione Read() comunque dopo
un invio non mi chiede più nulla. Inoltre non sempre i dati immessi
corrispondono a quelli visualizzati.
Voi che metodo utilizzate per chiedere all'utente di immettere dei
valori?
Grazie in anticipo.
Stefano

 valori?
Solitamente una qualche interfaccina grafica... inserire a mano da 
console i dati è un pò 'obsoleto'. Se serve (per prove, o per programmi 
non grafici) io di solito uso i parametri di lancio (quelli di main, per 
intenderci) per passare i dati alla classe.
bye
DKano

[CUT]
Anche io, per le prove, uso i parametri di lancio. Comunque, per l'uni, 
ho creato una classe che fa esattamente quello che cerchi.
Io te la mando, ma tu studiatela!
package util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
  * Classe per la gestione dell'input/output tramite console.
  * Si compone di soli metodi statici.
  * Cosi' da non dover dichiarare un'oggetto, per stampare un messaggio a
  * video.
  * */
public class ConsoleUtil {
   public static String getString(String message) {
     BufferedReader In = new BufferedReader(new 
InputStreamReader(System.in));
     //scrittura del testo del messaggio
     printMessage(message);
     //gestione della possibile eccezione
     try {
       String Input = In.readLine();
       return Input.trim();
     } catch (Exception e) {
       System.out.println("Si prega di inserire un valore valido.");
       return null;
     }
   }
   public static boolean getBoolean(String message) {
     String s = getString(message).trim();
     final String MESSAGGIO_INCOMPRENSIBILE =
         "Il valore inserito non e' valido. Reinserire (S/N)";
     if (s.equalsIgnoreCase("S"))
       return true;
     else if (s.equalsIgnoreCase("N"))
       return false;
     else {
       printMessage(MESSAGGIO_INCOMPRENSIBILE);
       return getBoolean(message);
     }
   }
   public static char getChar(String message){
     String s = getString(message).trim();
     final String MESSAGGIO_INCOMPRENSIBILE =
         "Il valore inserito non e' valido. Reinserire un singolo 
carattere";
     if (s.length()==1)
       return s.charAt(0);
     else {
       printMessage(MESSAGGIO_INCOMPRENSIBILE);
       return getChar(message);
     }
   }
   public static int getInt(String message){
     String s = getString(message).trim();
     final String MESSAGGIO_INCOMPRENSIBILE =
         "Il valore inserito non e' un numero intero valido. \n"
         + "Si prega di reinserirlo";
     try {
       return Integer.parseInt(s);
     } catch (Exception e) {
       printMessage(MESSAGGIO_INCOMPRENSIBILE);
       return getInt(message);
     }
   }
   public static char getUppercaseChar(String message){
     return Character.toUpperCase(getChar(message));
   }
   public static void printMessage(String message) {
    System.out.println(message);
   }
}
P.S. Occhio che il messaggio probabilmente spezza le istruzioni e va a capo.
-- 
            Davide Gurgone
      web: 
http://www.gurgone.it/
mail: davidechiocciolinagurgonepuntoit

 Stefano
Piccola premessa .. a mio modo di vedere Java non e' il piu' indicato
linguaggio di programmazione da utilizzare per inserire dati da bash .
Trovo molto piu' semplice creare una piccola e veloce interfaccia
grafica .. pero' agli inizi molti testi .. se non tutti .. trattano
Java come se fosse C ..
Detto questo , per leggere stringhe inserite nel System.in , con
questo :
InputStream in=System.in;
BufferedReader d = new  BufferedReader(new InputStreamReader(in));
stringa = d.readLine();
dovresti risolvere il problema .
Se vuoi inserire numeri , puoi crearti un Integer e usare il metodo
parse ...
ma questo penso sia spiegato in qualche parte nel tuo libro .
p.s. : purtroppo i libri su java fanno tutti mediamente schifo ( o
meglio .. al confronto con i libri sul C fanno schifo ) .
c'e' pero' da dire che la documentazione della Sun e' fatta molto bene
, e' facile da consultare ed e' praticamente tutto cio' che ti serve .
Imparando a leggere e capire quello che la documentazione spiega molti
problemi ti si risolvono da soli .

 intenderci) per passare i dati alla classe.
Mi serve solo per le prime volte, tanto per fare delle prove.
Ciao e grazie,
Stefano
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Io te la mando, ma tu studiatela!
[CUT]
Ti ringrazio. L'ho appena stampata e adesso me la studio.
GRAZIE!


       b = System.in.Read();
la console raccoglie quello che scrivi e lo passa al programma solo quando
premi invio.
Quindi se scrivi "20" e premi invio hai mandato i caratteri: '2', '0' più
quelli di fine linea.
Questo significa che la prima read restituirà '2' e la seconda non deve
chiederti proprio niente perché ha già un carattere da restituire e cioé
'0'. Attento agli apici. Il carattere '2' è rappresentato in ascii dal
numero 50 come puoi vedere in questa tabella:
http://www.lookuptables.com/
mentre il carattere '0' è codificato con il numero 48
Quindi se scrivi "20" in a=50 e b=48.
Come vedi c'erano alcune cose che dovevi sapere ;)
Come fare ad ottenere quello che volevi mi pare che te l'abbiano già
scritto.
Ciao
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/

Ragazzi, grazie a tutti per il notevole aiuto!
Stefano