|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 151
|
[Java] importare dati da file in una matrice
Ho un file di testo di questo tipo (ad es. chiamato "file1.txt"):
1 2 3 4 5 6 7 8 9 vorrei sapere qual'è il modo, una volta memorizzati i singoli numeri, per inserirli in una matrice di tipo [][]. In parole povere mi serve sapere il procedimento per far si che il programma inserisca tutti gli elementi letti dal file. grazie!!
__________________
ka0s |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
I numeri sono tutti interi??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 151
|
matrice generica n x m ed i numeri sono misti ma vanno trattati tutti come double.
__________________
ka0s |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
a) Creerei un metodo che prende in input un File e restituisce un double[][]. b) Userei un BufferedReader (concatenato a un FileReader) per leggere le righe. c) Userei un ArrayList<double[]> per contenere una lista di array (per la prima fase). d) Per ogni riga userei un StringTokenizer per spezzare i valori di una singola riga che poi converto in double e metto in un array double[] (che poi aggiungo alla lista). e) Creerei un nuovo array double[][] in cui metto tutti i singoli array presi nella fase prima. L'unica cosa a cui stare attenti è il controllo della correttezza della matrice: deve cioè essere rettangolare! In tutto, dovrebbero venire meno di 50 righe di codice.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
allora, per leggere da file fai tutto con un buffereReader, nele api ci sono le specificjhe che ora nn ricordo
poi su questo buffereReader fai una readLine e poi questa Stringa la tokenizzi sugli spazi. a codice...+o- Codice:
BuffereReader br= new BufferedReader(file);//file è il percorso, anche se mi sembra che bufferedReader vogia un fileReader come parametro, cmq vedi le API
Strin linea=br.readLine();
StringTokenizer st= new StringTokenizer(linea," ");
while(st.hasMoreTokens()){
matrice[i][j]=Double.parseDouble(st.nextyToken());
}
__________________
My gaming placement |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ecco cosa succede ad aprire la risposta e scriverla dopo 10 minuti, che arriva qualcuno e ti frega il posto
comunque andbin, sono d'accordo con la tua idea, abbbastanza lineare (che poi sono le cose migliori
__________________
My gaming placement |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 151
|
ok grazie!!
nel frattempo io avevo provato dividendo le righe in tanti "pezzetti" con StringTokenizer, solo che appunto non riuscivo a mettere ogni valore nella posizione giusta... com'è che si implementerebbe il punto "e" ?
__________________
ka0s |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
L'obiettivo è quello di creare (finalmente) un array bidimensionale. Quindi si procede così: Codice:
double[][] array2d = new double[dimension1][]; Quindi poi molto semplicemente: Codice:
for (int i = 0; i < dimension1; i++)
array2d[i] = arrList.get (i);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 151
|
grazie mille!!!!
proverò così
__________________
ka0s |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:29.


















