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

    Gestione di un arrayList in una classe senza main

    Buongiorno a tutti ! questo è il primo messaggio che scrivo su questo forum, speriamo bene ! Sono un programmatore alle prime armi di java e ho un problema da risolvere: in un esercizio devo gestire una social application. per questo mi servo di una classe Utente senza main, che mi gestisca le info degli utenti considerati immessi all' interno di un rudimentale database: nome cognome, anno di nascita e interesse. Tutto facile, il problema mi sorge quando devo gestire gli interessi perchè all' interno del database possono anche non esserci, esempio:

    Paperone - De Paperoni - 1946 - soldi - donne
    Gastone - Comesichiama - 1968

    voi mi direte di costruire un arrayList ma non sono molto pratico, ho provato a scrivere:
    (non so come si posta il messaggio in code, scusate)

    codice:
    public class Utente
    {
    	
    	private static String nome;
    	private static String cognome;
    	private static int AnnoNascita; 
    	private static ArrayList<String> interesse = new ArrayList<String>();
    	
    	
    	public Utente(String nome, String cognome, int AnnoNascita, ArrayList<String> interesse)
    	{
    		this.nome=nome;
    		this.cognome=cognome;
    		this.AnnoNascita=AnnoNascita;
    		for(int i=0;i<interesse.size();i++)
    		{
    				this.interesse = interesse;
    		}
    	}
    	
    	public String getNome()
    	{
    		return nome;
    	}
    	
    	public String getCognome()
    	{
    		return cognome;
    	}
    	
    	public int getAnnoNascita()
    	{
    		return AnnoNascita;
    	}
    	public ArrayList<String> getInteresse() 
    	{
    		return interesse;
    	}
    Qualora quello che ho scritto stia fatto bene, ho un altra domanda da farvi: nella classe con il main, quando inizializzo un costruttore scrivo:

    Utente x = new Utente(nome, cognome, annoNascita, interesse);
    utente.add(x);

    mi da errore di compilazione (giustamente) perchè mi dice che interesse è un elemento dell'arrayList, ma non so come rimediare. Soluzioniii ??? (

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

    Re: Gestione di un arrayList in una classe senza main

    Originariamente inviato da Smoker93
    (non so come si posta il messaggio in code, scusate)
    Beh... si scrive [CODE], poi si incolla il codice e si chiude il tutto scrivendo [/CODE].

    Ho corretto io.


    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
    Grazie mille, saresti così gentile da darmi anche una risposta al mio problema ?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Anzitutto i campi della classe non devono essere statici, altrimenti TUTTE le istanze di quella classe avranno gli stessi "valori".

    Il costruttore, comunque, è sbagliato ed ha un ciclo inutile:
    codice:
    for(int i=0;i<interesse.size();i++)
    {
       this.interesse = interesse;
    }
    Con questo codice stai assegnando N volte lo stesso arraylist alla stessa variabile.
    E' inutile perchè è come voler assegnare 10 volte lo stesso valore alla stessa variabile.
    E' sbagliato perchè, inizialmente, l'arraylist è nullo, quindi "interesse.size()" non può essere usato.

    Correzione:
    codice:
    this.interesse = interesse;
    Per l'istanziazione, è sempre l'operatore "new" ad istanziare una classe e richiamare il costruttore. L'uso di un ArrayList è piuttosto semplice e visto che hai un ArrayList di String è ancora più semplice:

    codice:
    interesse = new ArrayList<String>();   // Creo un arraylist che contiene stringhe
    interesse.add("Soldi");     // Aggiungo la stringa "Soldi" all'arraylist
    interesse.add("Donne");   // Aggiungo la stringa "Donne" all'arraylist
    Nel tuo caso, quindi, dovendo passarlo come parametro al costruttore di Utente:
    codice:
    ArrayList<String> listaInteressi = new ArrayList<String>();
    listaInteressi.add("Soldi");     // Aggiungo la stringa "Soldi" all'arraylist
    listaInteressi.add("Donne");   // Aggiungo la stringa "Donne" all'arraylist
    
    Utente u = new Utente("Paperone", "De Paperoni", 1957, listaInteressi);
    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

  5. #5
    Ma gli interessi, così come tutte le altre info, sono contenuti in un file database.txt che io gestisco da scanner nel main, facendo così, è la stessa cosa ??

    grazie mille comunque sia per la disponibilità

  6. #6
    poi inoltre, scusami se non sono stato molto chiaro, il costruttore io lo utilizzo in un altro file java che sfrutta la classe utente, quindi ho fatto:
    codice:
    Utente x = new Utente(nome, cognome, annoNascita, interesse);
    utente.add(x);
    Ed è qui che mi da errore di compilazione, volendo provo a passarti tutta la classe principale

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.