Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Lettura da file, e inserimento su matrice

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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:
    codice:
    ArrayList<String> fileContent = ...
    ...
    int righe = fileContent.size();
    int colonne = lunghezzaMassima;   // Ottenuta in lettura, al punto 2
    char[][] matrice = new char[righe][colonne]
    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 matrice


    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

  3. #3
    Il numero di righe lo conosco, ma non capisco come faccio leggere e inserire il contenuto di ciascuna lettera del file nella matrice...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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...
    Tramite il metodo charAt() della classe String.

    Tale metodo, invocato su una stringa, prende un indice "idx" e restituisce il carattere in posizione "idx" di quella stringa.

    codice:
    String str = "Ciao a tutti";
    System.out.println( str.charAt(8) );
    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".


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    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.

  6. #6
    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)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.