Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    13

    Array Oggetti

    ciao a tutti
    è da pochissimo tempo che programmo in Java.. quindi sono ancora molto inesperto ...
    ho scritto il seguente codice:

    Codice PHP:
    import java.io.*;


    class 
    Libro
    {
        private 
    String titolo;
        private 
    int pag;

        public 
    Libro(String tit,int p)
        {
            
    titolo=tit;
            
    pag=p;
        }
        public 
    String getTitolo()
        {
            return 
    titolo;
        }
        public 
    int getPag()
        {
            return 
    pag;
        }
        public 
    void setTitolo(String tit)
        {
            
    titolo=tit;
        }
        public 
    void setPag(int p)
        {
            
    pag=p;
        }
        
    //dato il titolo e numpag. ritorna true se esiste il libro
        
    public boolean cmpLibro(Libro l,String titint p)
        {


                if(
    l.getTitolo().equals(tit) && l.getPag().equals(p)){
                return 
    true;}
                else{
                return 
    false;}

        }

    cosa c'è che non va in questa versione?
    Codice PHP:
    ....
    public 
    boolean cmpLibro(Libro l[i],String titint p)
        {
                for(
    int j=0;j<i;j++)
                {
                
                if(
    l[j].getTitolo().equals(tit) && l[j].getPag().equals(p)){
                return 
    true;}
                else{
                return 
    false;}
                }
        }
    .... 
    spero mi aiuterete
    I don't want to wait for our lives to be over,
    Will it be yes or will it be sorry?..

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Nella dichiarazione del metodo:
    codice:
    public boolean cmpLibro(Libro l[],String tit, int p)
    La parte in grassetto.


    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
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    13
    Grazie LeleFT

    ma continuo ad avre due errori

    C:\...JavaDoc\Libro.java:33: cannot resolve symbol
    symbol : variable i
    location: class Libro
    for(int j=0;j<i;j++)
    ^
    C:...\JavaDoc\Libro.java:36: int cannot be dereferenced
    if(l[j].getTitolo().equals(tit) && l[j].getPag().equals(p)){
    ^
    2 errors



    ho provato a fare una piccola modifica :

    Codice PHP:
    public boolean cmpLibro(Libro l[],String titint p,int nElementi )
        {
                for(
    int j=0;j<nElementi ;j++)

                {

                if(
    l[j].getTitolo().equals(tit) && l[j].getPag().equals(p)){
                return 
    true;}
                else{
                return 
    false;}
                }
        } 
    cercando di passare come un argomento la dimensione dell'array.. ma niente
    non è che sbaglio qualcosa nel usare if(l[j].getTitolo().equals(tit) && l[j].getPag().equals(p))? non sono ancora pratico di questo linguaggio
    (lo studio solo da 2 mesi a scuola..)

    xke ne anche questo funziona??
    Codice PHP:
    public boolean cmpLibro(Libro l,String titint p
        { 
                if(
    l.getTitolo().equals(tit) && l.getPag().equals(p)){ 
                return 
    true;} 
                else{ 
                return 
    false;} 
        } 
    aiutooooo
    Grazie
    I don't want to wait for our lives to be over,
    Will it be yes or will it be sorry?..

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non serve passare la dimensione dell'array: in Java gli array sono oggetti e hanno un campo pubblico length che indica la loro dimensione.

    Poi, dato che p non è un oggetto ma un intero (tipo di dato primitivo), esso non può essere confrontato con il metodo []equals()[/b] dato che non possiede alcun metodo, ma va confrontato con l'operatore ==
    codice:
    for(int j=0;j<l.length;j++)
    {
       if(l[j].getTitolo().equals(tit) && (l[j].getPag() == p)){
          return true;
       } else {
          return false;
       }
    }
    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
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    13
    Grazie
    ho scritto il main..
    ma ho un errore

    codice:
    import java.io.*;
    
    
    class Biblioteca
    {
    	public static void main (String []args)
    	{
    		InputStreamReader ln=new InputStreamReader(System.in);
    		BufferedReader stdin=new BufferedReader(ln);
    
    		try
    		{
    			Libro book[4]=new Libro();
    			book[0]=new Libro("Honeymoon",120);
    			book[1]=new Libro("Kitchen",200);
    			book[2]=new Libro("Lucertola",400);
    			book[3]=new Libro("Amrita",350);
    
    			System.out.println("inserire il nome del libro da cercare\n nell'archivio della biblioteca: ");
    			String bookName=stdin.readLine();
    			System.out.println("inserire il numero di pagine del libro: ");
    			int pag=Integer.parseInt(stdin.readLine());
    
    			if( cmpLibro(book[4],pag)==true)
    			System.out.println("il libro è stato trovato");
    			else
    			System.out.println("Il libro non è stato trovato");
    		}
    		catch (Exception e)
    		{
    			System.out.println("Attenzione si è verificato un errore");
    		}
    	}
    }
    l'errore è sul Libro book[4]=new Libro();
    spero mi aiuterete
    grazie ancora.
    I don't want to wait for our lives to be over,
    Will it be yes or will it be sorry?..

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è così che si dichiara e si inizializza un array:
    codice:
    Libro[] book = new Libro[4];
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    13
    Grazie ancora

    ma i miei problemi non sono finiti..
    infatti mi da ancora un altro errore.. lo so che dovrei essere io a riconoscere i miei errori ma è che ho fatto solo una lezione di array di oggetti.. e non so proprio trovare dove sbaglio

    codice:
    import java.io.*;
    
    
    class Libro
    {
    	private String titolo;
    	private int pag;
    
    	public Libro(String tit,int p)
    	{
    		titolo=tit;
    		pag=p;
    	}
    	public String getTitolo()
    	{
    		return titolo;
    	}
    	public int getPag()
    	{
    		return pag;
    	}
    	public void setTitolo(String tit)
    	{
    		titolo=tit;
    	}
    	public void setPag(int p)
    	{
    		pag=p;
    	}
    	//dato il titolo e numpag. ritorna true se esiste il libro
    	public boolean cmpLibro(Libro l[],String tit, int p,int nElementi)
    	{
    			for(int j=0;j<nElementi;j++)
    			{
    				if(l[j].getTitolo().equals(tit) && l[j].getPag()==p)
    					return true;
    			}
    			return false;
    	}
    }
    codice:
    import java.io.*;
    
    
    class Biblioteca
    {
    	public static void main (String []args)
    	{
    		InputStreamReader ln=new InputStreamReader(System.in);
    		BufferedReader stdin=new BufferedReader(ln);
    
    		try
    		{
    			Libro book[]=new Libro[4];
    			book[0]=new Libro("Honeymoon",120);
    			book[1]=new Libro("Kitchen",200);
    			book[2]=new Libro("Lucertola",400);
    			book[3]=new Libro("Amrita",350);
    
    			System.out.println("inserire il nome del libro da cercare\n nell'archivio della biblioteca: ");
    			String bookName=stdin.readLine();
    			System.out.println("inserire il numero di pagine del libro: ");
    			int pag=Integer.parseInt(stdin.readLine());
    
    			if( cmpLibro(book[4],bookName,pag,4)==true)
    			System.out.println("il libro è stato trovato");
    			else
    			System.out.println("Il libro non è stato trovato");
    		}
    		catch (Exception e)
    		{
    			System.out.println("Attenzione si è verificato un errore");
    		}
    	}
    }
    C:\..\Biblioteca.java:24: cannot resolve symbol
    symbol : method cmpLibro (Libro,java.lang.String,int,int)
    location: class Biblioteca
    if( cmpLibro(book[4],bookName,pag,4)==true)

    non capisco perchéé
    aiutoooo
    I don't want to wait for our lives to be over,
    Will it be yes or will it be sorry?..

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    37
    tu hai scritto questo:

    codice:
    if( cmpLibro(book[4],bookName,pag,4)==true)
    L'errore sta in book[4].
    Quando passi utilizzi un array come parametro di un metodo devi omettere sia la dimensione sia le parentesi quadre.
    Come ti diceva in precedenza LeleFT per la variabile "i" non devi mettere il 4.
    Ti spiego meglio.

    1) Nella classe Libro hai definito il metodo cmpLibro(...) in questo modo:

    codice:
    cmpLibro(Libro[] l, String blaBlaBla, int pag, int numeroElementi){ ... }
    in questo caso Libro[] è una definizione e quindi se vuoi che li venga passato un array di libri devi mettere le parentesi quadre. Se non le mettessi significherebbe che vorresti gli fosse passato UN solo oggetto di tipo Libro. La dimensione nelle parentesi non devi metterla perchè in seguito potrai passare a quel metodo un array di libri di qualunque dimensione.
    Ti ricordo che la dimensione dell'arry la prendi con l'attributo length. Ad esempio per il nostro parametro "Libro[] l" puoi fare così:
    codice:
    int dimension = l.lenght;

    2) Quando invece il metodo viene invocato gli devi passare l'array di libri in questo modo:

    codice:
    unCertoLibro.cmpLibro(listaLibri, titolo, pag, nElem);
    in sostanza quì mancano le parentesi quadre e anche la dimensione. Non ti manca nulla però. Lui sa che quello è un array perchè l'hai definito da qualche parte e per lo stesso motivo conosci anche la dimensione.

    Vabò, :ciauz

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    13
    Grazie mille
    ho risolto il problema
    if( book[0]. cmpLibro(book,bookName,pag,4)==true)

    grazie mille
    di nuovo
    ciauz
    I don't want to wait for our lives to be over,
    Will it be yes or will it be sorry?..

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.