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:
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);
}
}
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.
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.