Salve a tutti.
Vorrei chiedere aiuto riguardo questo metodo che ho creato. In pratica ho due classi "Giocatore" e "Carta".
La classe Carta ha come attributi un String e un Int.
La classe giocatore ha, tra i vari attributi, un ArrayList di oggetti di tipo carta.
Ho creato un metodo per caricare l'Array tramite input da tasiera, vi riporto il codice del metodo:
Quando avvio il metodo riesco a caricare l'Array ma, dopo aver inserito da tastiera il primo parametro, per inserire il secondo devo andare a capo. Così facendo non ho problemi.codice:. . . private ArrayList<Carta> lista = new ArrayList<>(); . . . public void add(Carta e) { lista.add(e); } public void Carica() { Scanner in = new Scanner(System.in); Scanner in2 = new Scanner(System.in); int i = 0; System.out.println("Inserire il nome delle carte ed il relativo costo, parola FINE e numero 0 per terminare: "); while(i == 0) { String input = in.next(); int input2 = in2.nextInt(); if (input.equalsIgnoreCase("FINE") && input2 == 0) i++; else { Carta c = new Carta(input,input2); lista.add(c); } }
Se invece inserisco il primo parametro + SPAZIO + secondo parametro, quando poi vado a capo e inserisco dei nuovi paramentri mi da il seguente errore:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at riepilogo.arraylist.carica.array.input.cerca.eleme nto.Giocatore.Carica(Giocatore.java:48)
at riepilogo.arraylist.carica.array.input.cerca.eleme nto.RIEPILOGOARRAYLISTCaricaArrayInputCercaElement o.main(RIEPILOGOARRAYLISTCaricaArrayInputCercaElem ento.java:23)
C:\Users\tonin\AppData\Local\NetBeans\Cache\8.2\ex ecutor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 6 seconds)
Pensavo che il problema fosse nei metodi della classe scanner allora ho modificato il metodo del primo input con
codice:String input = in.NextLine();
ma il problema persiste.
C'è un modo per inserire entrambi gli attributi della classe carta, tramite input da tastiera, senza dover per forza andare a capo tra un attributo e l'altro? Penso che quasi sicuramente il problema sia lì nei metodi della classe Scanner ma non riesco a risolverlo
Grazie mille.

Rispondi quotando
