Visualizzazione dei risultati da 1 a 6 su 6

Discussione: problema oggetti

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    problema oggetti

    Oggi è il giorno degli oggetti :

    Data la classe Libro per rappresentare oggetti libro con il nome dell’autore, il titolo e il numero di pagine e con i relativi metodi d’istanza scrivere:
    - un metodo che, ricevendo come parametro il titolo di un Libro, calcola e restituisce un arrayList di oggetti Libro dello stesso autore
    - un metodo che, ricevendo come parametro un array di oggetti Libro, calcola e restituisce l’oggetto Libro con il massimo numero di pagine

    Mi sono creato il file Libro.java e LibroTest.java(dove ho il main)...
    codice:
    public class Libro {
    
       private String autore;
       private String titolo;
       private int pagine;
       Libro(String autore, String titolo, int pagine)
       {
            this.autore=autore;
            this.titolo=titolo;
            this.pagine=pagine;
       }
       //Libro.stessoAutore(autore);
       public static void stessoAutore(String titolo)
       {
            
       }
    codice:
    public class LibroTest {
        
        public static void main(String[] args) {
            // TODO code application logic here
            Libro lib1 = new Libro("Esopo","Le storie dell'asino", 20);
            Libro lib2 = new Libro("Italo Calvino","Il visconte dimezzato", 158);
            Libro lib3 = new Libro("Esopo","Le storie del cane", 20);
            Libro lib4 = new Libro("Gianni Rodari","Filastrocche lunghe e corte", 98);
            Libro lib5 = new Libro("Italo Calvino","Il cavaliere inesistente", 124);
            Libro lib6 = new Libro("Italo Calvino","Le cosmicomiche", 250);
            Libro lib7 = new Libro("Gianni Rodari","Enciclopedia della favola", 1120);
            Libro lib8 = new Libro("Italo Calvino","Il barone rampante", 135);
            Libro.stessoAutore("Le cosmicomiche");
            
        }
    il metodo l'ho creato ma come faccio passando il titolo al metodo, per riuscire a prendere l'autore...
    per il secondo punto invece devo creare degli oggetti libro esplicitamente io in ogni posizione dell'array che creerò...(es. libro[0]=new Libro(".....")) ??

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Affinchè il metodo possa lavorare deve avere accesso due dati: il titolo (che gli passi come parametro) e una struttura dati contenente tutti i libri da cui vuoi estrarre l'ArrayList (che non "vede", visto che non esiste). Devi creare quest'ultima nel main() e passarla come parametro a stessoAutore().
    Utilizzerai quest'ultima struttura dati - a patto che non venga modificata precedentemente - anche per il secondo punto dell'esercizio

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    ho fatto anche i vari metodi set e get per ogni attributo...
    poi nel main avrei aggiunto :
    ArrayList lista = new ArrayList();
    Libro.stessoAutore("Le cosmicomiche", lista);

    che poi va a chiamare nell'altra classe dove non c'è il main :

    codice:
    public static void stessoAutore(String titolo, ArrayList[] lista)
       {
            for(int i=0; i<lista.length;i++)
            {
            
            }
       }
    solo che mi dà errore, ovvero mi segnalata come errata il parametro lista che passo...
    stò sbagliando tutto vero?
    avevo anche pensato di inserire gli oggetti libro nell'arraylist ma provandoci non me li faceva inserire posizione per posizione...e poi forse non avrebbe senso visto che ci sono informazioni non omogenee da inserire...cioè non sono tutti autori, ma ogni oggetto libro è composto da autore, titolo e pagine...

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Le due istruzioni

    codice:
    ArrayList lista = new ArrayList();
    Libro.stessoAutore("Le cosmicomiche", lista);
    sono corrette ma, come hai detto, fra l'una e l'altra devi memorizzare nell'ArrayList tutti i libri che istanzi: in caso contrario, al metodo stessoAutore() arriverebbe una lista vuota.
    A parte che, volendo, la classe ArrayList lo consente, ma in ogni caso le informazioni che ci vai a mettere dentro sono omogenee: sono tutte istanze della classe Libro!

    L'errore lo ottieni perchè hai definito in maniera sbagliata il metodo stessoAutore(): tu gli stai passando un ArrayList, non un array di ArrayList!
    Mi sembra di capire che questo passaggio non ti sia del tutto chiaro... prova ad approfondire la documentazione della classe ArrayList:
    http://download.oracle.com/javase/6/...ArrayList.html

    Se vuoi qualche altro chiarimento scrivi pure qua sul forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Gentilissima Desa,
    nel main ho proseguito nel seguente modo :
    codice:
    ArrayList lista = new ArrayList();
    Libro lib1 = new Libro("Esopo","Le storie dell'asino", 20); 
    ....
    Libro lib 8 = new.....
    lista.add(lib1);
    ....
    lista add(lib8);
    Libro.stessoAutore("Le cosmicomiche", lista);
    e secondo me questo frammento, per quel che riguarda il main può andare bene
    i problemi li ho nell'altro file
    codice:
    public class Libro {
    
       private String autore;
       private String titolo;
       private int pagine;
       Libro(String autore, String titolo, int pagine)
       {
            this.autore=autore;
            this.titolo=titolo;
            this.pagine=pagine;
       }
       public void setAutore(String autore)
       {
            this.autore=autore;
       }
       public String getAutore()
       {
            return autore;
       }
       ....fatto set e get con tutti gli attributi
       
       public static void stessoAutore(String titolo, ArrayList lista)
       {
            for(int i=0; i<lista.size();i++)
            {
                if(lista.get(i)==titolo)
                {
                    
                }
            }
       }
    qua non riesco, dato il parametro titolo non capisco proprio come posso riuscire a prendere tutti i libri dello stesso autore...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bobo24
    qua non riesco, dato il parametro titolo non capisco proprio come posso riuscire a prendere tutti i libri dello stesso autore...
    Allora: innanzitutto mettere un metodo statico di questo tipo nella classe Libro potrebbe essere discutibile ... ma diciamo che va bene per non fare altre questioni.

    Al metodo passi una lista (di oggetti Libro, chiaramente) e quindi il metodo può certamente iterare sulla lista. Ora: "stesso autore" .... di che cosa? Del libro il cui titolo è quello che il metodo riceve anche?

    Allora se è così è da fare in 2 passi:

    a) Scansioni la lista per cercare il Libro che ha quel titolo. Nell'oggetto Libro trovato chiaramente hai anche l'autore.

    b) Scansioni una seconda volta la lista per cercare tutti gli oggetti Libro con quel autore trovato appena prima.

    Trovati gli N, oggetti Libro, cosa vuoi fare? Perché il metodo ritorna void (nulla) e a meno che tu voglia a) Modificare la lista ricevuta o b) Stampare qualcosa su System.out, non vedo cosa altro possa fare.

    P.S. Il:
    if(lista.get(i)==titolo)

    non ha assolutamente senso. Il get(i) ritorna un Object, che è un Libro (e devi fare un cast). Ed è poi da questo che devi prendere il titolo e poi confrontarlo. E nota: confrontarlo NON con == ma con equals().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.