Salve a tutti,
stavo studiando il funzionamento della classe Scanner e mi sono imbattuto in una serie di perplessità.
In particolare ho capito che il metodo next() - ma anche nextInt(), nextDouble() ecc... - prende solo il primo token della stringa digitata. Quindi, se per esempio facessi:
codice:
String str = in.next(); // input da tastiera: "ciao mondo"
la variabile str conterrebbe solamente "ciao".
Fin qui d'accordo... ma se in seguito volessi prendere una stringa intera invocando nextLine() non posso. Il programma salta direttamente alla prossima istruzione.
Non so spiegare esattamente cosa accade, ma è come se il next() restasse in ascolto di un nuovo input, mentre il successivo nextLine() prende semplicemente una riga vuota, senza dare la possibilità all'utente di inserire qualcosa in input.
Una possibile soluzione che ho trovato è quella di usare sempre e solo nextLine() e poi convertire l'input nel giusto tipo di dato primitivo a seconda del caso (parseInt se int, parseDouble se double ecc...). Per esempio:
codice:
String str = in.nextLine();
int num = Integer.parseInt(str);
in questo caso la variabile str viene convertita in int. Ma non sarebbe molto più comodo usare direttamente nextInt()?
Insomma... ci sono altre soluzioni?