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

    Problema con eclipse: gestione documenti multimediali (arraylist)

    Salve,
    ho un programma formato da 4 classi:
    -DocMultimediale: 7 variabili d'istanza (tipo, percorso, dimensione, datacreazione, dataultimamodifica, descrizione e formato;
    -Utente: 2 var d'istanza (username, percorso del file al quale può accedere);

    lo scopo del programma è quello di modellare un documento multimediale, un utente che ha accesso a questo documento e un gestore file che deve compiere le seguenti operazioni:
    -stampare una lista di documenti che hanno lo stesso tipo;
    -stampare una lista di documenti che hanno lo stesso tipo e modello;
    -stampare la lista di documenti a cui possono accedere gli utenti inserendo come input lo username dell'utente.

    vi copio il gestore file:

    import java.util.Scanner;
    import java.util.ArrayList;
    import java.io.PrintStream;

    public class GestoreFile {
    public GestoreFile(Scanner sc, Scanner sc1){

    documenti=new ArrayList<DocMultimediale>();
    DocMultimediale doc=DocMultimediale.read(sc);
    while (doc!=null){
    documenti.add(doc);
    doc=DocMultimediale.read(sc);
    }

    utenti=new ArrayList<Utente>();
    Utente u=Utente.read(sc1);
    while (u!=null){
    utenti.add(u);
    u=Utente.read(sc1);
    }
    }
    public GestoreFile(ArrayList<DocMultimediale> docs){
    documenti=docs;
    }
    public void printDoc(PrintStream ps){
    for (DocMultimediale d: documenti)
    ps.println(d);
    }
    public void printUtente(PrintStream ps){
    for (Utente u: utenti)
    ps.println(u);
    }
    //Restituisce una arraylist di file che hanno lo stesso tipo;
    public GestoreFile searchForTipo(String tipo){
    ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    for (DocMultimediale d: documenti){
    if (tipo.equalsIgnoreCase(d.getTipo()))
    foundDocs.add(d);
    }
    return new GestoreFile(foundDocs);
    }
    //Restituisce una arraylist di file che hanno lo stesso formato;
    public GestoreFile searchForFormato(String formato){
    ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    for (DocMultimediale d: documenti){
    if (formato.equalsIgnoreCase(d.getFormato()))
    foundDocs.add(d);
    }
    return new GestoreFile(foundDocs);
    }
    //Restituisce l'utente che ha l'username inserito nella lista di parametri;
    public Utente searchUtenteForUsername(String username){
    int i=0;
    boolean done=false;

    if (utenti==null)
    return null;

    while (i<utenti.size() && !done){
    if (username.equalsIgnoreCase(utenti.get(i).getUserNa me()))
    done=true;
    else i++;
    }
    if (done) return utenti.get(i);
    return null;
    }
    //Restituisce la lista di file a cui un utente può accedere partendo dal suo username;
    public GestoreFile searchFileForUsername(String username){
    //Utilizziamo il metodo precedentemente implementato;
    Utente u=searchUtenteForUsername(username);

    if (u==null) return null;
    String percorso=u.getPercorso();
    ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    for (DocMultimediale d: documenti){
    if (percorso.equalsIgnoreCase(d.getPercorso()))
    foundDocs.add(d);
    }
    return new GestoreFile(foundDocs);
    }
    private ArrayList<Utente> utenti;
    private ArrayList<DocMultimediale> documenti;
    }




    Gli ultimi due metodi non mi funzionano. Non da errore (mai pagina fu più immacolata) ma da errore nell'esecuzione. Credo che l'errore principale sia nel penultimo metodo (searchUtenteForUsername): poco prima di iniziare il ciclo while ho eseguito un controllo con l'if per vedere se la variabile d'istanza clienti (arraylist) era vuota o aveva qualche elemento e credo proprio che sia vuota perchè, quando eseguo il tester, non mi restituisce nulla.
    Tutto il resto funziona.
    Domani ho un test.
    Aiutatemi.

  2. #2

    Re: Problema con eclipse: gestione documenti multimediali (arraylist)

    Originariamente inviato da stefanuzz199
    Salve,
    ho un programma formato da 4 classi:
    -DocMultimediale: 7 variabili d'istanza (tipo, percorso, dimensione, datacreazione, dataultimamodifica, descrizione e formato;
    -Utente: 2 var d'istanza (username, percorso del file al quale può accedere);

    lo scopo del programma è quello di modellare un documento multimediale, un utente che ha accesso a questo documento e un gestore file che deve compiere le seguenti operazioni:
    -stampare una lista di documenti che hanno lo stesso tipo;
    -stampare una lista di documenti che hanno lo stesso tipo e modello;
    -stampare la lista di documenti a cui possono accedere gli utenti inserendo come input lo username dell'utente.

    vi copio il gestore file:
    codice:
    import java.util.Scanner;
    import java.util.ArrayList;
    import java.io.PrintStream;
    
    public class GestoreFile {
    	public GestoreFile(Scanner sc, Scanner sc1){
    		
    		documenti=new ArrayList<DocMultimediale>();
    		DocMultimediale doc=DocMultimediale.read(sc);
    		while (doc!=null){
    			documenti.add(doc);
    			doc=DocMultimediale.read(sc);
    		}
    		
    		utenti=new ArrayList<Utente>();
    		Utente u=Utente.read(sc1);
    		while (u!=null){
    			utenti.add(u);
    			u=Utente.read(sc1);
    		}
    	}
    	public GestoreFile(ArrayList<DocMultimediale> docs){
    		documenti=docs;
    	}
    	public void printDoc(PrintStream ps){
    		for (DocMultimediale d: documenti)
    			ps.println(d);
    	}
    	public void printUtente(PrintStream ps){
    		for (Utente u: utenti)
    			ps.println(u);
    	}
    	//Restituisce una arraylist di file che hanno lo stesso tipo;
    	public GestoreFile searchForTipo(String tipo){
    		ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    		for (DocMultimediale d: documenti){
    			if (tipo.equalsIgnoreCase(d.getTipo()))
    				foundDocs.add(d);
    		}
    		return new GestoreFile(foundDocs);
    	}
    	//Restituisce una arraylist di file che hanno lo stesso formato;
    	public GestoreFile searchForFormato(String formato){
    		ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    		for (DocMultimediale d: documenti){
    			if (formato.equalsIgnoreCase(d.getFormato()))
    				foundDocs.add(d);
    		}
    		return new GestoreFile(foundDocs);
    	}
    	//Restituisce l'utente che ha l'username inserito nella lista di parametri;
    	public Utente searchUtenteForUsername(String username){
    		int i=0;
    		boolean done=false;
    		
    		if (utenti==null)
    			return null;
    		
    		while (i<utenti.size() && !done){
    			if (username.equalsIgnoreCase(utenti.get(i).getUserName()))
    				done=true;
    			else i++;
    		}
    		if (done) return utenti.get(i);
    		return null;
    	}
    	//Restituisce la lista di file a cui un utente può accedere partendo dal suo username;
    	public GestoreFile searchFileForUsername(String username){
    		//Utilizziamo il metodo precedentemente implementato;
    		Utente u=searchUtenteForUsername(username);
    		
    		if (u==null) return null;
    		String percorso=u.getPercorso();
    		ArrayList<DocMultimediale> foundDocs=new ArrayList<DocMultimediale>();
    		for (DocMultimediale d: documenti){
    			if (percorso.equalsIgnoreCase(d.getPercorso()))
    					foundDocs.add(d);
    		}
    		return new GestoreFile(foundDocs);
    	}
    	private ArrayList<Utente> utenti;
    	private ArrayList<DocMultimediale> documenti;
    }
    Gli ultimi due metodi non mi funzionano. Non da errore (mai pagina fu più immacolata) ma da errore nell'esecuzione. Credo che l'errore principale sia nel penultimo metodo (searchUtenteForUsername): poco prima di iniziare il ciclo while ho eseguito un controllo con l'if per vedere se la variabile d'istanza clienti (arraylist) era vuota o aveva qualche elemento e credo proprio che sia vuota perchè, quando eseguo il tester, non mi restituisce nulla.
    Tutto il resto funziona.
    Domani ho un test.
    Aiutatemi.
    Prima di tutto inseriamo il tag [CODE] altrimenti non è molto leggibile.
    Secondo se l'array list clienti è vuoto allora ci sarà un errore durante l'inizializzazione (cioè nel costruttore) e molto probabilmente penso che sia in queste due righe:
    codice:
    utenti.add(u);
    u=Utente.read(sc1);

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.