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

    File java

    Ciao...
    Ho un problemino per leggere un file.
    Ho un file formato così:

    Parola1
    Documento1 frequenza
    Documento2 frequenza
    Documento3 frequenza
    ................
    Parola2
    Documento2 frequenza
    Documento4 frequenza
    Documento7 frequenza
    ................
    ParolaN
    Documento5 frequenza
    Documento7 frequenza
    Documento12 frequenza


    Devo leggere il file e caricare le parole in un albero e i documenti e le frequenze in una lista.


    Io avevo pensato di usare il token..però:
    problema 1: deve distinguere parola da documento...come?

    problema 2: il file è di lunghezza non definita..

    penso che token non va bene..cosa posso usare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Nella maniera classica, con un while per leggere tutte le linee fino alla fine. Ogni riga splitti per spazio e a seconda della lunghezza sai se e' una parola o una coppia doc-freq
    codice:
    BufferedReader in = new BufferedReader(new FileReader("tuoFile.txt"));
    String line = null;
    String[] tmp;
    while((line=in.readLine())!=null) {
       tmp = line.split(" ");
       if(tmp.length==1) {
          //Parola
       } else if(tmp.length==2) {
          //Coppia Documento-Frequenza
       } else {
          //Formato riga non valido
       }
    }
    in.close();

  3. #3
    Grazie...

  4. #4

    Albero binario

    Ciao...
    Ho un albero binario di ricerca, e in ogni suo nodo devo inserire sia una stringa sia una lista come posso fare?
    Io ho creato un altra classe dove ho passato la stringa e la lista (ma qust'ultima da qualche problema) e poi l'ho inserita nel nodo, ma l'albero non viene visualizzato...che devo fare?

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

    Moderazione

    Postare il codice che ti dà dei problemi, altrimenti è impossibile aiutarti.


    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

  6. #6
    Dato in input un file della seguente forma:

    Parola1
    Documento1 frequenza
    Documento2 frequenza

    Parola2
    Documento2 frequenza
    Documento4 frequenza

    ParolaN
    Documento5 frequenza
    Documento7 frequenza

    1. Leggere il file, caricando l'elenco dei documenti in un albero binario di ricerca. Ogni nodo
    dell albero binario di ricerca conterra oltre alla parola una lista linkata relativa a tutti i
    documenti che la contengono con le rispettive frequenze.

    codice:
    import java.io.*;
    
    public class EsameB13giu07
    {
    	public static void main(String [] args)
    	{
    		Albero al = new Albero();
    		Lista lista = new Lista();
    		FileReader f = null;
    		BufferedReader fIN = null;
    		
    		try
    		{
    			f =new FileReader("elenco.txt");
    			fIN = new BufferedReader(f);
    		}
    		catch(Exception e)
    		{
    			System.out.println("Impossibile leggere il file");
    			System.exit(1);
    		}
    		
    		try
    		{
    			String elenco = fIN.readLine();//leggo il file
    			while(elenco!=null)
    			{
    				String a[]=elenco.split(",");
    				
    				if(a.length <=1)
    					{
    						String parola = a[0];
                
                // invio alla classe pair i dati relativi alla lista e alla parola(non sono sicura se inviare                 //così la lista è giusto)
                pair p1=new pair(parola,lista);
                
    						//inserisco la coppia di dati nell'albero
    						al.Inserisci(p1);
                System.out.println("Inizio albero");
    						al.StampaGrafica();//Stampo l'albero(ma stampa solo un //nodo)
                System.out.println("Fine albero ");
                            lista.clear();
    					}
    				else
    					{
                            
    						String documento = a[0];
    						String frequenza = a[1];
    						System.out.println(" doc: "+documento+" freq: "+frequenza);
    						String totale=documento+" "+frequenza;
    						lista.Ins_Coda(totale);
                            System.out.println(" ......lista.....");
                            lista.Stampa();
                            System.out.println(" ...... fine lista.....");
    						
    					}
    				elenco = fIN.readLine();
    			}
    			fIN.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println("Errore in lettura");
    			System.exit(1);
    		}
    		//al.StampaGrafica();
    		//lista.Stampa();
    	}
    }
    
    
    Questa è l'altra classe:
    public class pair
    {
      public String str;
      public Lista lista;
      public pair(String s, Lista l)
      {
        str=s;
        lista=l;
      }
      
      public String getStr()
      {
        return str;
      }
      
      public Lista getLista()
      {
        return lista;
      }
      
      public void setStr(String s)
      {
        str=s;
      }
      
      public void setLista(Lista l)
      {
        lista=l;
      }
      public String toString()
      {
       return "parola: "+str+" "+lista; 
      }
    }
    Spero che ora sia più chiaro...

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

    Moderazione

    Ho unito le due discussioni, dato che il problema riguarda sempre lo stesso argomento.


    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.