Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    53

    token in java per net beans IDE 5.5

    buon giorno a tutti, io dovrei caricare un file di testo in un elemento 'Vector' in java, così avrei:

    private Vector prog = new Vector();
    //private List prog=new ArrayList();
    String nuovoFile = "primometa.txt";

    ma io devo avere, per ogni riga del file 'primometa' un elemento solo del mio vettore 'prog'
    (poi mi vengono dubbi se usare una 'List' non mi agevolerebbe il lavoro?!?!?!?):

    String token = "";
    String riga = "";
    try
    {

    FileInputStream fs = new FileInputStream(nuovoFile);
    DataInputStream dis = new DataInputStream(fs);

    e dal titolo vi ho parlato di token, perchè ora, per ogni elemento del vettore, ovvero per ogni riga del file di testo, io dovrei leggere la prima parola:

    riga = dis.readLine();
    StringTokenizer tok=new StringTokenizer(riga);
    token = tok.nextToken();
    while (riga != null)
    {
    //numRighe++;
    if(riga.charAt(0)!='#')
    {
    try
    {
    prog.addElement(riga);

    i miei problemi nascono qui quando devo aggiornare i token. come devo fare?

    //dis.close();
    }
    catch (Exception e)
    {System.err.println("Errore nella lettura da file!");}
    }
    riga = dis.readLine();

    anche qui nutro dubbi, quale comando mi fa questo assegamento?

    token = tok.nextToken();

    perde il riferimento.........

    }
    dis.close();
    }
    catch(IOException e)
    {
    System.out.println(e.toString());
    }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Moderazione

    Ho modificato il titolo.
    Il problema, di per se, è indipendente dall'ambiente di sviluppo che utilizzi, così ho rimosso il riferimento a NetBeans per poter aggiungere informazioni sulla natura del problema.


    Ad ogni modo, per risolvere più agevolmente il tuo problema, potresti evitare l'utilizzo dello StringTokenizer e utilizzare il metodo split() della classe String.
    Esso ritorna un array di stringhe, ciascuna delle quali è appunto lo split della stringa di partenza, in cui viene utilizzato il delimitatore contrassegnato dalla RegEx passata (in pratica a te serve come delimitatore lo spazio):

    Quindi, al posto di usare lo StringTokenizer per tokenizzare la stringa, puoi fare così:
    codice:
    String[] tokens = riga.split(" ");
    E così, se ti interessa sempre e solo la prima parola di ciascuna riga, è sufficiente che prendi tokens[0].


    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
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    53
    ciao LeleFT, grazie per il tuo tempo, e come prassi qualcosa l'ho sbagliata......... ma comunque ora ho risolto il problema , era solo un errore di sequenza istruzini, mettevo
    codice:
    token = tok.nextToken();
    
    nel posto sbagliato.
    se c'è qualcuno a cui interessa quale era la sequenza giusta , ecco il codice
    
    int numRighe = 0;
    
    String token = "";
    File filenuovo=null;
    String riga = "";
    int pos = 0;
    try
    {
    FileInputStream fs = new FileInputStream(nuovoFile);
    DataInputStream dis = new DataInputStream(fs);
    riga = dis.readLine();
    while (riga != null)
    {
    numRighe++;
    if(riga.charAt(0)!='#')
    { 
    
    try 
    {
    prog.addElement(riga);
    NumRiga++;
    System.out.println("" +NumRiga+ "° riga = "+prog.lastElement());
    }
    catch (Exception e) 
    {System.err.println("Errore nella lettura da file!");} 
    StringTokenizer tok=new StringTokenizer(riga);
    token = tok.nextToken();
    } 
    else
    {NumComm++;}
    riga = dis.readLine(); 
    }
    System.out.println("righe di commento cancellate = " +NumComm); 
    // 3. chiusura del file 
    dis.close();
    }
    catch(IOException e)
    {System.out.println(e.toString());}

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.