Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    30

    Semplice programma Java che legge un file txt e memorizza token

    Ciao a tutti,
    avrei bisogno di un aiuto per un semplice programmino in Java che simula un distributore di Dvd. Ho 3 classi: console, videoteca e dvd. Nella classe videoteca ho creato un metodo load() che va a leggere il file di testo (basedati.txt) che è così strutturato:
    titolo regista codiceNumerico numeroDvdDisponibili numeroDvdTotali.
    Il mio problema è che vorrei memorizzare i Dvd che ho letto in un array del tipo:
    Dvd[] d=new Dvd[n]; in modo da potervi accedere per fare le operazioni sucessive di ricerca, prelievo, cancellazione...
    Ecco il metodo load():
    codice:
    public void load() throws Exception{
    	FileReader fr= new FileReader("basedati.txt");		
    	BufferedReader br=new BufferedReader(fr);
    	String s;
    	String[] tit;		
    	String[] reg;
    	Dvd nuovo;
    	d=new Dvd[n];
    	
    	
    	while((s=br.readLine())!=null){
    		System.out.println("La riga letta è: "+s);
    		System.out.println("I token sono: ");
    		StringTokenizer st=new StringTokenizer(s);		
    		
    			String titolo=st.nextToken();	
    			StringTokenizer st2=new StringTokenizer(titolo,"_");	
    			int count2=st2.countTokens();	
    			for(int i=0;i<count2;i++){	
    			tit=new String[count2];
    				tit[i]=st2.nextToken();
    			System.out.println("Titolo: "+tit[i]);	
    			}
    			
    			String regista=st.nextToken();
    			StringTokenizer st3=new StringTokenizer(regista,"_");
    			int count3=st3.countTokens();
    			for(int j=0;j<count3;j++){
    				reg=new String[count3];
    				reg[j]=st3.nextToken();
    				System.out.println("Regista: "+reg[j]);
    				}
    			
    			
    			String codice=st.nextToken().toString();
    			
    			String disponibili=st.nextToken().toString();
    			String totali=st.nextToken().toString();
    			
    		System.out.println("Titolo: "+titolo+" ; Regista: "+regista+" ; Codice: "+codice+" ; Disponibili: "+disponibili+" ; Totali: "+totali);
    	
    		System.out.println();
    		
    		nuovo=new Dvd(titolo, regista, codice, disponibili, totali);	
    		System.out.println("il dvd!" + nuovo);		
    }
    }
    Mentre la classe dvd è così strutturata:
    codice:
    public class Dvd {
    
    	private String titolo;
    	private String regista; 
    	private String codice; 
    	private String disponibili; 
    	private String totali;
    	
    	public Dvd(String tit, String reg, String cod, String disp, String tot){
    		tit=titolo;
    		reg=regista;
    		cod=codice;
    		disp=disponibili;
    		tot=totali;
    	
    	}
    
    	public String getTitolo() {
    		return titolo;
    	}
    
    	public String setTitolo(String titolo) {
    		return this.titolo = titolo;
    	}
    
    	public String getRegista() {
    		return regista;
    	}
    
    	public void setRegista(String regista) {
    		this.regista = regista;
    	}
    
    	public String getCodice() {
    		return codice;
    	}
    
    	public void setCodice(String codice) {
    		this.codice = codice;
    	}
    
    	public String getDisponibili() {
    		return disponibili;
    	}
    
    	public void setDisponibili(String disponibili) {
    		this.disponibili = disponibili;
    	}
    
    	public String getTotali() {
    		return totali;
    	}
    
    	public void setTotali(String totali) {
    		this.totali = totali;
    	}
    }
    Grazie a tutti quelli che proveranno ad aiutarmi

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    30
    Inoltre se creo un array del tipo Dvd []d =new Dvd[100]

    e poi sempre nel metodo load aggiungo al fondo:
    codice:
    nuovo=new Dvd(titolo, regista, codice, disponibili, totali);
    		
    		System.out.println("il dvd!" + nuovo);
    		
    			d[k]=nuovo;
    			k++;
    			System.out.println(+k);
    			System.out.println(d[k]);
    Mi stampa:

    il dvd!Dvd@3487a5cc
    1
    null
    il dvd!Dvd@eb42cbf
    2
    null

    ecc..
    Come mai?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Nella classe DVD non hai ridefinito il metodo toString() quindi, buttando in output un oggetto di tipo DVD quello che vedrai apparire è l'indirizzo in memoria dell'oggetto (ovvero, la definizione standard del metodo toString() della classe Object).

    codice:
    System.out.println(d[k]);
    d[k] è un oggetto di tipo DVD.

    Per i null che vengono stampati bisogna vedere quanto vale k.

    PS: se li hai visti/studiati, considera l'uso un ArrayList (un array dinamico), senza dover creare un array di dimensione fissa che potrebbe essere sovradimensionato.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    30
    Perfetto,
    ho capito l'errore e ora funziona!!

    Grazie mille

    Ciao ciao

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.