Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]contatore di oggetti diversi contenuti in un arraylist

    Ciao devo realizzare una classe torreche rappresenta unatorre di blocchi.Il mio problema è l'implementazione del metodo numColorati() ed numJolly(), che chiedono di estituiire il numero di blocchi colorati ed di blocchi jolly presenti nella torre.

    codice:
    import java.util.*;
    class Torre{
    private String nome;
    ArrayList<Blocco1> a;
    BloccoColorato b; //sottoclasse di Blocco1
    BloccoJolly1 b1; ////sottoclasse di Blocco1
    
    Torre(String nome){
    this.nome=nome;
    a=new ArrayList<Blocco1>();
    }
    public void addBlocco(Blocco1 b){
    a.add(b);
    }
    public int numColorati(){
    int count=0;
    for(Blocco1 b:a){
     if(a.contains(b)){
    count++;
    }
    }
    return count;
    }
    public int numJolly(){
    int count=0;
    for(Blocco1 b:a){
     if(a.contains(b1)){
    count++;
    }
    }
    return count;
    }
    public static void main (String [] args){
    BloccoColorato n=new BloccoColorato(2,"rosso");
    BloccoColorato n1=new BloccoColorato(3,"giallo");
    BloccoColorato n2=new BloccoColorato(4,"rosa");
    BloccoJolly1 n3=new BloccoJolly1(5);
    Torre t=new Torre("ggg");
    t.addBlocco(n);
    t.addBlocco(n1);
    t.addBlocco(n2);
    t.addBlocco(n3);
    System.out.println(t.numColorati());
    System.out.println(t.numJolly());
    }
    }
    Il compilatore mi restutisce 4 e 0 al posto di 3 (numero di blocchi colorati) ed 1(numero di blocchi jolly).Perchè iterando l'arraylist ed usando il metodo contains il compilatore non mi riconosce gli ogetti BloccoColorato e BloccoJolly1?

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,

    scorri la tua lista e verifica il tipo di ogni oggetto con la instanceof. Esempio:


    codice:
    if(un_certo_blocco instanceof BloccoColorato)
        ...

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Il compilatore mi restutisce 4 e 0 al posto di 3 (numero di blocchi colorati) ed 1(numero di blocchi jolly).Perchè iterando l'arraylist ed usando il metodo contains il compilatore non mi riconosce gli ogetti BloccoColorato e BloccoJolly1?
    Alt, qui c'è un po' di confusione (almeno per me che leggo il tuo codice).

    Innanzitutto vedo 2 variabili di istanza in Torre:

    BloccoColorato b; //sottoclasse di Blocco1
    BloccoJolly1 b1; ////sottoclasse di Blocco1

    Chi/dove le setta?


    Poi quale è il senso di:

    codice:
    for(Blocco1 b:a){
     if(a.contains(b)){

    Cioè, itero su 'a' (ArrayList di oggetti Blocco1) e per ciascun elemento verifico che ArrayList lo contiene? (ovvio che concettualmente lo contiene ... me lo dà la iterazione ...)

    E comunque contains si basa sul equals degli oggetti. Come è il equals di Blocco1?

    E infine tieni presente che il equals applicato quando ci sono di mezzo sottoclassi è più critico.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    Ciao grazie per la dritta con instanceof viene tutto...sei stato gentilissimo

  5. #5
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ciao avevo pensato di iterare ogno ogetto della mia listab e poi di verificare se conteneva lo specifico oggetto...diciamo che ho provato ad invertarmi nuove regole sulle variabili in java...cmq credevo che contains(object)funzionasse anche per verificare se la lista contenesse sottoclassi ...quindi da quanto ho capito questo ciufolo di metodo serve per verificare che una lista contenga oggetti in generale (e non sottoclassi) giusto?
    Ultima modifica di el92; 21-05-2015 a 12:24

  6. #6
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Ciao grazie per la dritta con instanceof viene tutto...sei stato gentilissimo
    Molto bene.

    Ciao!

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.