Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    Ricerca lineare - ArrayList

    Ho un problema con le ArrayList. Praticamente ho creato nella classe contenente il main una ArrayList. Ho creato poi un'altra classe che ha come parametro lo stesso oggetto dell'ArrayList. Questa classe deve cercare un elemento della lista e se lo trova restituire "true" altrimenti "false".

    codice:
    import java.util.ArrayList;
    
    
    public class Cerca {
    	
    	public boolean hasCoin(Coin aCoin){
    		
    		for(Coin c : coins){
    			
    			if(c.equals(aCoin))
    				return true;
    		}
    		
    		return false;
    	}
    
    
    }
    il problema si ha con coins (il nome dell'ArrayList) che non me lo da visibile all'interno della classe Cerca.

    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    O stai facendo confusione o non hai fatto le cose per bene.

    Dal codice che hai postato, dovrebbe esistere una classe chiamata Coin le cui istanze devono essere contenute in un ArrayList... ma tu stai usando una variabile chiamata "coins" che non è definita da nessuna parte.


    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
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    O stai facendo confusione o non hai fatto le cose per bene.

    Dal codice che hai postato, dovrebbe esistere una classe chiamata Coin le cui istanze devono essere contenute in un ArrayList... ma tu stai usando una variabile chiamata "coins" che non è definita da nessuna parte.


    Ciao.
    codice:
    import java.util.ArrayList;
    
    public class Creatore {
    
        public static void main(String[] args) {
            
            ArrayList <Coin> coins = new ArrayList();
            coins.add( new Coin(0.1, "dime"));  // i = 0
            coins.add( new Coin(0.25, "quarter"));  // i = 2
            Coin aNickel = new Coin(0.05, "nickel"); // i = 1
        }
            
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    Questa classe deve cercare un elemento della lista e se lo trova restituire "true" altrimenti "false".
    Tra l'altro, perché replichi un comportamento che ArrayList (tutte le List) ha già?

    public boolean contains(Object o)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    codice:
    import java.util.ArrayList;
    
    public class Creatore {
    
        public static void main(String[] args) {
            
            ArrayList <Coin> coins = new ArrayList();
            coins.add( new Coin(0.1, "dime"));  // i = 0
            coins.add( new Coin(0.25, "quarter"));  // i = 2
            Coin aNickel = new Coin(0.05, "nickel"); // i = 1
        }
            
    }

    E la classe "Cerca" cosa ne sa di quello che tu fai altrove? Stai creando un ArrayList (e tante altre cose) all'interno del metodo main() della classe Creatore... il resto del mondo non ne sa nulla.


    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Forse non mi sono spiegato bene (forse mi sono rincoglionito)

    1) Ho creato una ArrayList che contiene oggetti di tipo Coin() La classe Coin è questa:

    codice:
    public class Coin {
          
        public Coin(double unValore, String unNome){
            nome = unNome;
            valore = unValore;
        }
        
        public String daiNome(){
            return nome;
        }
        
        public double daiValore(){
            return valore;
        }
        
        public boolean equals(Coin moneta){
            return nome.equals(moneta.daiNome());
        }
        
        private String nome;
        private double valore;
    }
    le istanze le ho salvate nell'ArrayList nella classe main

    codice:
    import java.util.ArrayList;
    
    
    public class Creatore {
        
        public static void main(String[] args) {
            
        ArrayList <Coin> coins = new ArrayList();
            coins.add( new Coin(0.1, "dime"));  
            coins.add( new Coin(0.25, "quarter")); 
            Coin aNickel = new Coin(0.05, "provola"); 
        }
        
    }
    Ora quello che voglio fare è una terza classe che prende in input un oggetto di tipo Clone che si vuole cercare. Se esiste restituisce "true" altrimenti "false". All'interno della classe c'è il for che confronta tutti gli oggetti della lista (coins) con quello dato come parametro. Il problema è coins che non è visibile all'interno della classe Cerca.
    Ultima modifica di Bombonera; 25-05-2015 a 16:53

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    E la classe "Cerca" cosa ne sa di quello che tu fai altrove? Stai creando un ArrayList (e tante altre cose) all'interno del metodo main() della classe Creatore... il resto del mondo non ne sa nulla.
    e quindi non si può fare niente ?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E va bene... ma questa terza classe deve "conoscere" l'arraylist... e per conoscerlo sei tu che devi passarglielo in qualche modo (nel costruttore, se decidi di passarlo lì, oppure tramite un metodo). Perchè questa terza classe per lavorare deve conoscere:

    1) L'arraylist all'interno del quale cercare l'oggetto

    e

    2) L'oggetto da cercare nell'arraylist.

    Il secondo lo passi al metodo hasCoin... ma il primo non glielo passi da nessuna parte... lei come fa a conoscere l'arraylist?


    Ciao.
    Ultima modifica di LeleFT; 25-05-2015 a 17:02
    "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

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    dovrei fare in questo modo

    public boolean hasCoin(Coin aCoin, ArrayList coins)

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì, quello è un modo.


    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

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.