Salve, vorrei sapere come posso fare per inserire dati da un file txt del genere:
ABC
DEF
che mi restiuisca una matrice composta da:
mat[0][0] = A
mat[0][1] = B
mat[0][2] = C
mat[1][1] = D
mat[1][2] = E
mat[1][3] = F
![]()
Grazie in anticipo![]()
Salve, vorrei sapere come posso fare per inserire dati da un file txt del genere:
ABC
DEF
che mi restiuisca una matrice composta da:
mat[0][0] = A
mat[0][1] = B
mat[0][2] = C
mat[1][1] = D
mat[1][2] = E
mat[1][3] = F
![]()
Grazie in anticipo![]()
Dipende.
Se conosci a priori il numero di righe del file e ciascuna riga contiene lo stesso numero di caratteri, la cosa è semplice. Altrimenti dovrai appoggiarti ad una struttura dati dinamica (un ArrayList<String> va benissimo) in cui inserire tutte le righe del file e, successivamente, fare le tue considerazioni.
La logica, nel caso in cui il numero di righe non sia noto a priori e le righe stesse non contengano lo stesso numeri di caratteri, è la seguente:
1) Leggi tutto il file e inserisci ciascuna riga letta all'interno dell'ArrayList.
2) Man mano che leggi, tieni conto della lunghezza massima che hai letto
3) Costruisci una matrice NxM con N righe e M colonne in questo modo:
4) Scorri tutto l'ArrayList. Per ciascun elemento, con un ciclo for ottieni il singolo carattere (usando il metodo charAt() di String) e lo salvi nella corretta posizione della matricecodice:ArrayList<String> fileContent = ... ... int righe = fileContent.size(); int colonne = lunghezzaMassima; // Ottenuta in lettura, al punto 2 char[][] matrice = new char[righe][colonne]
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Il numero di righe lo conosco, ma non capisco come faccio leggere e inserire il contenuto di ciascuna lettera del file nella matrice...![]()
Tramite il metodo charAt() della classe String.Originariamente inviato da Fixxxer393
Il numero di righe lo conosco, ma non capisco come faccio leggere e inserire il contenuto di ciascuna lettera del file nella matrice...![]()
Tale metodo, invocato su una stringa, prende un indice "idx" e restituisce il carattere in posizione "idx" di quella stringa.
Questo stampa "u", ovvero il nono carattere (l'indice è 0-based, quindi il primo caratetre ha posizione 0, il secondo posizione 1, ecc) della stringa "str".codice:String str = "Ciao a tutti"; System.out.println( str.charAt(8) );
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Aggiungo a quello che a scritto LeleFT:
mettiamo che tu abbia 20 righe e quindi hai una matrice del tipo:
char m[][] = new char[20][3];
e che nella "String riga" hai appena letto dal file "DEF"
allora la i-esima riga della matrice la puoi settare con:
m[i] = riga.toCharArray();
Ciao.
Fondamentalmente il mio problema non è tanto nella creazione della matrice ma quanto nella lettura del file di testo, ossia il codice con il quale posso leggere un file .txt e averne il contenuto dentro a una stringa (che poi posso far diventare una matrice)
Beh, per quello era sufficiente una ricerca nel forum. L'argomento è stato trattato talmente tante volte che oramai ci si potrebbe scrivere un libro con le pagine del forum.
http://forum.html.it/forum/showthrea...readid=1475296
http://forum.html.it/forum/showthrea...readid=1474053
http://forum.html.it/forum/showthrea...readid=1380766
Questi sono gli stessi link che avevo dato ad un altro utente per lo stesso identico motivo, qui:
http://forum.html.it/forum/showthrea...readid=1516007
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza