Problema nell'uso della classe Scanner

di il
1 risposte

Problema nell'uso della classe Scanner

Salve a tutti, probabilmente il mio problema sarà una banalità , ma mi sono interessato da poco a questo linguaggio. Ho cercato di realizzare un programma molto basilare: inizialmente chiede quanti studenti si vogliono inserire e il parametro viene assegnato alla variabile intera "numeroStudenti" tramite nextInt ( ). Successivamente con un ciclo for assegno ogni stringa (che comprende cognome e nome dello studente) all'array list denominato "studenti" tramite nextLine ( ). Il problema sorge quando inserisco il valore di numeroStudenti, perchè quando poi premo invio mi assegna automaticamente un blank (suppongo) al parametro del 1 studente, mentre gli altri vengono assegnati correttamente.
Conoscete un modo per risolvere questo problema? Grazie mille in anticipo

1 Risposte

  • Re: Problema nell'uso della classe Scanner

    albertotrabacchin ha scritto:


    il parametro viene assegnato alla variabile intera "numeroStudenti" tramite nextInt ( ). Successivamente con un ciclo for assegno ogni stringa (che comprende cognome e nome dello studente) all'array list denominato "studenti" tramite nextLine ( ).
    È il "solito" e noioso problema che leggo almeno 2~3 volte alla settimana sui forum.
    Se ad un nextInt() si inserisce 123<invio> il nextInt() restituisce 123 ma il "newline" digitato rimane bufferizzato in Scanner e sarà scartabile ad un successivo nextInt, nextLong ecc.... Ma siccome si usa appena dopo nextLine(), esso lo prende come una riga "vuota".
    Tutto qui. NON è un "baco" di Scanner, funziona così.
    Soluzione? O si evita il mix di nextLine() con gli altri nextXXX (es. si usa solo nextLine e si converte a int, ecc.. quanto serve) oppure si fa un nextLine "a vuoto" (senza usare il valore di ritorno) giusto per buttare via la riga.
Devi accedere o registrarti per scrivere nel forum
1 risposte