Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128

    lettura file testo con separatori e dati in array

    Salve a tutto il forum, sono nuovo di Java e quindi ringrazio chiunque vorra darmi qualche dritta scusandomi se fosse un argomento gia trattato. Ho realizzato in Javascript/html cio che volevo ma a causa delle limitazioni di js non posso implementare alcune funzionalità. Ho deciso qundi di creare lo stesso applicativo in Java (magari un .exe ottenuto da un .jar compilato)

    veniamo alla domanda: devo leggere un file di testo con struttura a campi con separatore con numero di righe variabile ma numero di campi per riga fisso fatto in questo modo:

    tipo1;testo1;prezzo1
    tipo1;testo2;prezzo2
    ....
    tipo5;testoN;prezzoN

    e mettere i singoli campi in un array [][] (matrice).
    Il file di testo dovrebbe essere letto con path relativo (ad esempio potrebbe trovarsi sempre nella stessa cartella del file exe indipendentemente da dove i due file verranno messi all'interno del file system)

    Lo step successivo è utilizzare i dati tipo testoN e utilizzarli per creare dinamicamente bottoni sulla interfaccia grafica posizionati in posizioni prestabilite dell'interfaccia diverse a seconda di quale tipoN appartengano (es tutti i bottini dil tipoY in alto a sinistra...tutti i bottoni del tipoZ in basso a destra) Ovviamente tutto in base ai campi del l'array che ho creato. Spero sia chiaro quello che intendo....

    Vorrei sapere se è fattibile e qualche dritta per poterlo realizzare, uso Java con Netbeans
    grazie a tutti in anticipo per la pazienza

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013

    Re: lettura file testo con separatori e dati in array

    Originariamente inviato da Kneos
    Salve a tutto il forum, sono nuovo di Java e quindi ringrazio chiunque vorra darmi qualche dritta scusandomi se fosse un argomento gia trattato. Ho realizzato in Javascript/html cio che volevo ma a causa delle limitazioni di js non posso implementare alcune funzionalità. Ho deciso qundi di creare lo stesso applicativo in Java (magari un .exe ottenuto da un .jar compilato)
    fare l'exe non serve a niente.

    veniamo alla domanda: devo leggere un file di testo con struttura a campi con separatore con numero di righe variabile ma numero di campi per riga fisso fatto in questo modo:

    tipo1;testo1;prezzo1
    tipo1;testo2;prezzo2
    ....
    tipo5;testoN;prezzoN

    e mettere i singoli campi in un array [][] (matrice).
    Il file di testo dovrebbe essere letto con path relativo (ad esempio potrebbe trovarsi sempre nella stessa cartella del file exe indipendentemente da dove i due file verranno messi all'interno del file system)
    divide et impera. Ti serve guardare come si legge un file riga per riga (argomento trattato ampiamente sia nella guida ufficiale che qui sul forum). Decidere se non sia il caso di utilizzare una struttura dati ad-hoc, leggi classe, che modelizzi meglio il dato/record e quindi estendere ad una collections di tali oggetti.

    Lo step successivo è utilizzare i dati tipo testoN e utilizzarli per creare dinamicamente bottoni sulla interfaccia grafica posizionati in posizioni prestabilite dell'interfaccia diverse a seconda di quale tipoN appartengano (es tutti i bottini dil tipoY in alto a sinistra...tutti i bottoni del tipoZ in basso a destra) Ovviamente tutto in base ai campi del l'array che ho creato. Spero sia chiaro quello che intendo....
    Leggi un po' di cose su LayoutManager e componenti. Se cerchi "The Swing Tutorial" in internet, come primi risultati trovi linkate le pagine relative alla guida ufficiale della oracle/sun su componenti e layout managers disponibili in Swing con svariati esempi pratici.

    Vorrei sapere se è fattibile e qualche dritta per poterlo realizzare, uso Java con Netbeans
    grazie a tutti in anticipo per la pazienza
    è certamente fattibile. Sul fatto che usi un IDE e mi pare di capire sei alle prime armi con java... potrei avere qualche obiezione, ma basta moralismi...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    Intanto grazie per la risposta e della pazienza, ribadisco la mia poca dimestichezza con Java e linguaggi OO puri. Js, php ecc ecc sono molto piu semplici come approccio e intuitivi nell'utilizzo.
    ma finche non ci si cimenta con qualcosa di piu complicato non si impara nulla di nuovo quindi per ora non mi arrrendo.
    Afftontiamo un problema per volta:
    prima cosa è leggere il file txt di input e tramutarlo in array con campi derivati da righe "splittate" da ";" per ora ho usato questo ma sono sicuro che non è la strada giusta

    try {
    BufferedReader input = new BufferedReader(new FileReader("miofile.txt"));
    StringBuffer buffer = new StringBuffer();
    String text;
    while ((text = input.readLine()) != null)
    buffer.append(text + "\n");
    input.close();
    } catch (IOException ioException) {
    }
    direi che la cosa sbagliata è mettere il tutto in uno Stringbuffer che poi non mi permentte di splittare in array 2 dimensioni per avere dati del tipo mioArray[i][j]
    Ho letto un po di cose su ArrayList e StrngTokenizer ma su entrambi ho dei dubbi che siano cio che cerco.
    Ti ringrazio in anticipo se vorrai ancora aiutarmi, cosi come tutti coloro che vorranno farlo qui sul forum.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quello StringBuilder è inutile.
    Dopo che hai letto messo in text la riga corrente usa il metodo split() (indicando il separatore) per ottenere i singoli token.

    Esempio:
    codice:
    String s = "AAA;BBB;CCC";
    String[] splitted = s.split(";");
    
    System.out.println(splitted[0]); // AAA
    System.out.println(splitted[1]); // BBB
    System.out.println(splitted[2]); // CCC
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    grazie, cosi sembra piu semplice ma mi chiedo se il risultato finale alla fine del while in splitted sia effettivamente un array con tutti i campi di tutte le righe. cioe se potessi stampare splitted (tipo un print_r del php per intenderci) troverei un array a due dimensioni con tutto cio che mi serve potendo quindi utilizzare ogni singolo elemento in questo modo splitted[][]??

    ancora grazie!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Kneos
    ma mi chiedo se il risultato finale alla fine del while in splitted sia effettivamente un array con tutti i campi di tutte le righe.
    No, quanto suggerito da Alex'87 vale per 1 riga. Se vuoi avere alla fine un array bidimensionale, allora certamente ognuno dei splitted (per ciascuna riga) potrà essere il sub-array nella matrice bidimensionale ma quest'ultima, in quanto oggetto a sé stante, la devi istanziare tu.
    E c'è il fatto che per istanziarla dovresti sapere a priori quante righe ci sono ..... quindi o sai a priori il numero di righe oppure ti conviene usare una collezione, metterci dentro tutti gli splitted e poi alla fine creare l'array bidimensionale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Kneos
    grazie, cosi sembra piu semplice ma mi chiedo se il risultato finale alla fine del while in splitted sia effettivamente un array con tutti i campi di tutte le righe. cioe se potessi stampare splitted (tipo un print_r del php per intenderci) troverei un array a due dimensioni con tutto cio che mi serve potendo quindi utilizzare ogni singolo elemento in questo modo splitted[][]??

    ancora grazie!
    Non hai capito.
    split() restituisce sempre e solo String[], nient'altro.

    Il tuo while ti fa leggere il file una riga alla volta. Su ogni riga letta chiami split. Otterrai quindi un array per ciascuna riga.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    grazie andbin, infatti mi era venuto il sospetto che fosse solo per una riga per questo ho fatto la domanda. detto cio confermo che non so a priori quante righe avro nel file mentre il numero di campi per riga è fissato ma questo credo che non abbia importanza, quindi come giustamente hai detto mi serve un array bidimensionale per poter poi avere disponibili sempre i singoli campi.
    Hai qualche info da darmi circa la collezione, puoi farmi un esempio? ti ringrzio

  9. #9
    Utente di HTML.it L'avatar di Kneos
    Registrato dal
    Aug 2002
    Messaggi
    128
    chiedo scusa a Alex'87 se non ho capito cosa intendesse ma come ho spiegato nel post in risposta adnbin mi serve poter recuperare un singolo campo quindi avere piu array forse non è per ma la soluzione corretta, meglio un array solo bidimensionale.
    Scusate la mia ignoranza di Java!!!!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Kneos
    Hai qualche info da darmi circa la collezione, puoi farmi un esempio? ti ringrzio
    Se non conosci le collezioni c'è innanzitutto il tutorial di Oracle. Per il tuo caso ti basta un semplice ArrayList (java.util.ArrayList).
    E nota che da Java 5 le collezioni possono usare i "generics" e se l'ArrayList lo tipizzi come ArrayList<String[]>, alla fine l'array bidimensionale ce l'hai (quasi) a-gratis grazie al toArray(T[] a)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.