SrJustEasy ha scritto:
Come posso buttare via una riga dopo il nextInt()?
E se invece utilizzassi due Scanner? Uno tastiera, ed uno tastiera2... Potrebbe funzionare?
Ti basta usare un altro next() senza assegnarlo a nulla.
Evita di utilizzare due Scanner, tecnicamente la cosa funzionerebbe ma non è buona prassi creare più di un oggetto Scanner su System.in, usa sempre lo stesso.
In ogni caso ti stai complicando la vita per niente, ti abbiamo già detto che il parsing da stringa a intero DEVE essere fatto.
Se tu usi nextInt() il parsing verrà fatto in automatico, ma se ciò che hai inserito non è un intero il programma crasha. In più hai sempre il problema con il buffer, e sei costretto a ricorrere a un trucchetto per risolvere.
Se usi nextLine() ti basta convertire la stringa in intero chiamando Integer.parseInt(). In questo modo :
- Risolvi il problema con il buffer, in quanto leggi la riga intera inserita dall'utente, qualunque cosa lui inserisca prima di digitare invio.
- Puoi scegliere se risolvere o meno l'errore causato da un inserimento errato. Se scegli di farlo (con il blocco try-catch, o con metodi più "artigiani") eviti di incorrere in errori di inserimento.
Ma se NON vuoi ancora farlo, il programma NON si complica rispetto a quanto stai facendo ora, ti basta una riga per fare il parsing ed è finita lì, in caso di errore in inserimento il programma crasherà proprio come fa ora.
Quindi come vedi non ci sono svantaggi nella soluzione consigliata, se non il dover scrivere una trentina di caratteri in più, per il resto risolvi il problema col buffer e volendo puoi anche gestire gli errori