Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    [JAVA] input da tastiera

    Ho un problema.
    Ho da poco iniziato con java e sto facendo i classici esercizi per prendere confidenza con l'ambiente.... Tra questi ho creato un programma che definito un int n ad es =10, me ne calcola il fattoriale. Io perō vorrei che n fosse inserito dall'utente in maniera random da tastiera.
    So che esiste una cosa tipo :

    System.out.print("Inserire un Numero: ");
    BufferedReader input = new BufferedReader( new InputStreamReader (System.in));
    String n = input.readLine();
    ma non soo a che punto del codice metterla , potreste aiutarmi?
    Grazie
    Chissā se gli infanti apprezzano l'infanzia quanto gli adulti apprezzano l'adulterio.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Allora... Dato che Java č un linguaggio Object Oriented, tutto funziona con gli oggetti. Quindi, per qualsiasi cosa, tu hai bisogno di un oggetto.

    Gli oggetti li puoi dichiarare un po' dove vuoi all'interno del codice (N.B.: La posizione, in molte situazioni, č determinante per la visibilitā), l'importante č che qualsiasi oggetto che viene usato sia istanziato prima di usarlo, altrimenti avrai una bella eccezione, famosissima, che si chiama NullPointerException.

    Quindi, se vuoi usare un oggetto BufferedReader per l'input da tastiera (che, praticamente, si usa sempre per l'input da tastiera), basta che tu lo dichiari all'inizio del metodo main:
    codice:
    class MiaClasse {
       public static void main(String [] args) {
          BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
    
          String mia_variabile = br.readLine();
          ...
       }
    }
    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

  3. #3
    questo vale anche se il mio main č alla fine del mio listato?
    ti spiego, io ho definito la classe, al suo interno ho dichiarato tutte le funzioni che voglio vengano svolte e infine ho messo il main con:

    .
    .
    .
    public static void main(String[] args)
    {
    Fattor f = new Fattor();
    f.Calcola();
    f.StampaVideo();
    }
    č qui dentro che dovrei inserire il tutto?
    Chissā se gli infanti apprezzano l'infanzia quanto gli adulti apprezzano l'adulterio.

  4. #4
    ... e poi con BufferedReader prendo una stringa, mentre io vorrei un int...
    Chissā se gli infanti apprezzano l'infanzia quanto gli adulti apprezzano l'adulterio.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Certamente.
    Non ha importanza l'ordine in cui vengono scritti i metodi. Una classe č una collezione di metodi e proprietā, quindi č un insieme di metodi e proprietā e, come ben sai, in un insieme non conta l'ordine degli elementi.

    Una cosa, perō: se hai necessitā di usare il tuo BufferedReader anche all'interno di altri metodi (oltre al main), lo devi dichiarare al di fuori di tutti i metodi (per quel doscorso sulla visibilitā).
    Se hai bisogno di usare il BufferedReader anche all'interno di altri metodi devi fare cosė:
    codice:
    class MiaClasse {
       BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
    
       ... // Tutti gli altri tuoi metodi
    
       public static void main(String [] args) {
          String mia_variabile = br.readLine();
       }
    }
    Da notare che la dichiarazione del BufferedReader la potevi fare anche dopo il metodo main stesso, perchč č ad un livello superiore, quindi č come se fosse dichiarato prima di qualsiasi altro metodo.

    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

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Per ottenere un int da una stringa bisogna usare le classi Wrapper (se ne č parlato molto in questo forum):
    codice:
    String mia_variabile = br.readLine();
    int mio_numero;
    try {
       mio_numero = Integer.parseInt(mia_variabile);
    } catch (NumberFormatException nfe) {
       System.out.println("Digitare un numero!");
    }
    Esistono classi Wrapper per tutti i tipi primitivi.

    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

  7. #7
    ok, provo e ti faccio sapere.
    Grazie cmq per l'aiuto
    Chissā se gli infanti apprezzano l'infanzia quanto gli adulti apprezzano l'adulterio.

  8. #8
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    dall'input prendi una stringa, poi lo casti a int col seguente metodo:
    String s = br.readLine();
    int x = Integer.parseInt(s);

    se la stringa s non e' un numero, parseInt lancia un'eccezione e precisamente NumberFormatException (che eventualmente puoi gestire)

  9. #9
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    ops ho postato in ritardo

  10. #10

    HMMMMMM!!!!!

    il mio pezzo di codice (che spero vi sia di chiarimento) č il seguente:

    public static void main(String[] args)
    {
    String s = input.readLine();
    int num;
    try
    {
    num = Integer.parseInt(s);
    }
    catch (NumberFormatException nfe) {
    System.out.println("digitare un numero:");}
    Fattor f = new Fattor();
    f.Calcola();
    f.StampaVideo();
    }
    ma quando compilo mi da il seguente errore:

    non-static variable input cannot be referenced from a static context
    String s =....
    Che cavolo vuol dire? E soprattutto cosa sto sbagliando?
    Chissā se gli infanti apprezzano l'infanzia quanto gli adulti apprezzano l'adulterio.

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.