Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Java, gestione input

  1. #1

    Java, gestione input

    Salve a tutti...sono un neofita del java e proprio pochi minuti ja sono riuscito a creare il mitico "Hello World!" ( mi sembra quasi di aver partorito! )
    Comunque, stò leggendo una guida (Mattone dopo mattone) e devo dire che è molto chiara...però, ho le idee molto...ma proprio molto confuse riguardo la gestione degli input.
    Ho letto i diversi tipi di imput (Byte, Carattere...) però non le ho capite.
    Potreste spiegarmele?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Java, gestione input

    Originariamente inviato da Salvo_86_
    Ho letto i diversi tipi di imput (Byte, Carattere...) però non le ho capite.
    Ti riferisci alle classi per l'I/O nel package java.io?
    Quali sono i dubbi in particolare? (potrei anche partire io in quarta a spiegarti cosa c'è e come si usa ... ma dovrei scrivere parecchio, meglio se poni tu le questioni)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Allora, dubbi di preciso non ne ho.
    Non ho capito però quello che dovrei sapere leggendo le varie guide....
    Facciamo un esempio:
    nel primo post ho scritto di aver creato un programma (il classico Hello World)...supponiamo ora che voglia settare una variabile = a un nome da inserire e il programma ri-elebori come output:
    "Ciao...Nome_Inserito".
    ecco il codice:

    class Saluto {
    public static void main (string args[]) {
    char Nome;
    System.out.println("Inserisci il tuo nome");
    String s = scanner.nextLine(); //giusto????
    System.out.println("Ciao"+Nome); //mmmm....che ne pensate?
    }
    }



    Avresti qualche buona guida da consigliarmi riguardo l' i/o???

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salvo_86_
    codice:
    class Saluto {
            public static void main (string args[]) {
                     char Nome;
                     System.out.println("Inserisci il tuo nome");
                     String s = scanner.nextLine();                  //giusto???? 
                     System.out.println("Ciao"+Nome);             //mmmm....che ne pensate?
            }
    }
    No, è sbagliato e per diversi motivi:
    - il parametro args va messo String[] (si può anche mettere le [] a destra della variabile ma la convenzione standard è di metterle attaccate al tipo).
    - La variabile Nome è dichiarata come char. Tecnicamente corretto ma char è 1 carattere. Quindi va String.
    - Hai usato una variabile denominata 'scanner' ma ovviamente devi dichiararla e creare un oggetto Scanner (e ci vuole l'import di java.util.* all'inizio) da assegnare a scanner. E Scanner lo crei passando tipicamente System.in.
    - Il risultato di nextLine() lo assegni a 's'. Corretto anche qui tecnicamente ma poi nel println dopo usi Nome.

    Originariamente inviato da Salvo_86_
    Avresti qualche buona guida da consigliarmi riguardo l' i/o???
    Io per I/O intendo generalmente le classi di I/O nel package java.io. Scanner non è propriamente per l'I/O (primo è in java.util, secondo è di uso più generale oltre che per l'input da standard-input).

    C'è la sezione sul I/O sul tutorial ufficiale: http://java.sun.com/docs/books/tutor.../io/index.html

    Comunque prima di fare qualcosa con l'I/O (a parte usare i System.out.println) io ti suggerirei di acquisire bene i concetti di base di Java: variabili, tipi di dati, operatori, ecc...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Aspetta, aspetta....mi sono cofunso
    Fino al fatto di dichiarare String al posto di char ci sono, è semplice.
    Dopo, non credo di aver capito bene

    String s = scanner.nextLine(); //questo l' ho preso da internet.

    Ma come dici tu ho dichiarato una variabile (scanner) che però per usarla deve essere inserito all' inizio del programma java.util.*
    Però volendo potrei sostituire "scanner" con (ad esempio) "rigadaleggere"

    ovviamente devi dichiararla e creare un oggetto Scanner
    Potresti farmi un esempio? mi spiego, in c++ uso ad esempio
    int a=5;
    ma in java? Dalla guida mattone dopo mattone credo di aver capito sia lo stesso, ma in questo caso come dighiaro e creo un oggetto?
    String scanner;
    ???


    E Scanner lo crei passando tipicamente System.in.
    ???

    N.B
    Non stò asslutamente affermando che tu non sia stato chiaro, so di essere ancora molto "scarso"; ne sono consapevole.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salvo_86_
    String s = scanner.nextLine(); //questo l' ho preso da internet.

    Ma come dici tu ho dichiarato una variabile (scanner) che però per usarla deve essere inserito all' inizio del programma java.util.*
    No, alt. Innanzitutto la classe Scanner è in java.util, quindi se non vuoi scrivere ovunque nel sorgente espressamente java.util.Scanner, all'inizio del sorgente devi "importare" questa classe specifica o fare un import-on-demand:

    import java.util.Scanner;

    oppure

    import java.util.*;

    Per la questione della variabile: tu hai messo un nome 'scanner' ma non è dichiarato da alcuna parte nel tuo codice. Devi dichiarare una variabile di tipo Scanner, non basta mettere scanner-punto-qualcosa.


    Originariamente inviato da Salvo_86_
    Però volendo potrei sostituire "scanner" con (ad esempio) "rigadaleggere"


    Potresti farmi un esempio?
    codice:
    import java.util.Scanner;
    
    public class Saluto {
        public static void main(String[] args) {
            // dichiarazione variabile + istanziazione Scanner + inizializzazione variabile!
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("Inserisci il tuo nome");
    
            String nome = scanner.nextLine();
    
            System.out.println("Ciao " + nome);
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ok benissimo! Questo l' ho capito! (me l' hai proprio imboccato con il cucchiaino
    Ora, ciò lo posso anche usare per ricevere un intero?

    Cioè qualcosa tipo:

    Codice PHP:
    import java.util.*; //importo la classe util per usare scanner

    public class Somma {
        public static 
    void main(String[] args) { // String??? dovrei metterci Int??? 
            // dichiarazione variabile + istanziazione Scanner + inizializzazione variabile!
            
    Scanner scanner = new Scanner(System.in);

            
    System.out.println("Inserisci un numero: ");

            
    int numero scanner.nextLine();
           
            
    int a=3;

            
    System.out.println(numero a);
        }


  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Salvo_86_
    Ok benissimo! Questo l' ho capito! (me l' hai proprio imboccato con il cucchiaino
    Ora, ciò lo posso anche usare per ricevere un intero?
    Più o meno. Al posto di nextLine() dovrai usare nextInt().
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salvo_86_
    Ora, ciò lo posso anche usare per ricevere un intero?

    int numero = scanner.nextLine();
    Questo che hai scritto no. nextLine() restituisce un String non un int.

    Come ti ha già detto Alex'87 scanner ha un nextInt() (e svariati altri). Ma se poi ti viene in mente di fare nel tuo programma dei mix di nextLine() e altri nextXYZ() (XYZ altro tipo, vedi javadoc) c'è da stare attenti alla bufferizzazione dallo standard-input e alla separazione dei "token" fatta da Scanner.

    Quindi il mio consiglio è quello di prendere sempre una riga (String) con nextLine() e poi "parsare" la stringa tramite Integer.parseInt(), Long.parseLong() ecc... a seconda di cosa ti serva. (e ripeto, anche qui basta guardare sul javadoc ufficiale).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.