Ok e quale è il dubbio ora? Non è chiara la mia spiegazione generalizzata che ho fatto nel EDIT?
Ok e quale è il dubbio ora? Non è chiara la mia spiegazione generalizzata che ho fatto nel EDIT?
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
No, tu sei sempre esaustivo
Sono un po' confuso su come interagire con la soluzione. L'array list usa il metodo add per aggiungere un valore e dovrei creare una nuova variabile da cui leggere in input.
Comunque ecco come inserisco i valori:
è proprio in valore[i] = br.readLine(); che devo mettere mano giusto? Ho fatto come hai detto e ho stanziato l'array prima ancora di aprire il metodo, dando una capacità di memorizzazione massima di 20 elementi.codice:System.out.print("Quanti valori vuoi inserire?: "); try { max = Integer.parseInt(br.readLine()); }catch(NumberFormatException e) { System.err.println("Inserisci un numero!"); max = Integer.parseInt(br.readLine()); } for(int i = 0; i < max; i++) { System.out.println("Inserisci " + (i+1) + "° valore: "); try { valore[i] = br.readLine(); }catch(IndexOutOfBoundsException e) { System.err.println("Non c'è più spazio in memoria!"); } }
Continuo a non capire però come faccio a salvare tutti i valori precedentemente letti e nuovi.
?
Innanzitutto bisognerebbe vedere il "design" della tua classe/i. Spererei che, come minimo, tutto quello che stai facendo per interagire con l'utente lo fai nel contesto di una istanza della tua classe, in modo da poter tenere variabili di istanza come appunto per l'array.
È sufficiente tenere "in vita", per la durata della applicazione, 2 cose:
- un String[], inizialmente di lunghezza 0 (non nullo).
- un int che indica il numero "logico" di elementi correnti e che fa anche da indice per il successivo inserimento, inizialmente a 0.
Poi basta incapsulare la logica di espansione dell'array in un metodo es.
private void espandiArray(int numeroAggiunti)
Qui dentro la logica è semplice:
- istanzi un nuovo array di lunghezza uguale alla dimensione corrente + numeroAggiunti.
- ricopi i vecchi elementi. Basta un ciclo for o anche arraycopy di System che fa tutto.
- assegni il nuovo array alla variabile di istanza.
Il resto (ciclo di input) prosegue senza che debba sapere altro (a parte quel numero "logico" di elementi).
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet