Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22

    !!Variabile d'istanza SET!!

    Salve a tutti e buona domenica! Vi scrivo perch� ho un problema con un esercizio:

    Si progetti una classe MultiElemento con le variabili di istanza valore (tipo double, final) e ripetizioni (tipo int).

    La classe deve avere:

    un costruttore che crea un MultiElemento dati valore e ripetizioni (se ripetizioni � minore di 1, viene impostato ad 1);

    un costruttore che crea un MultiElemento dato il valore (impostando ripetizioni ad 1);

    un metodo getValore();

    un metodo getRipetizioni();

    un metodo setRipetizioni (int ripetizioni) che imposta il campo ripetizioni al valore dato come parametro (se ripetizioni � minore di 1, viene impostato ad 1);

    un metodo toString() che restituisce la descrizione nel seguente modo (nell�esempio seguente il campo valore � 3.14 e il campo ripetizioni � 5): elemento 3.14 occorrenze 5

    ----------------------------------------------------

    Si progetti una classe MultiInsieme con una variabile di istanza set di tipo ArrayList che rappresenti un multinsieme. La classe deve avere: ï‚· un costruttore che crea un MultiInsieme vuoto

    un metodo getRipetizioni (double valore) che restituisce il numero di ripetizioni relative all�elemento valore contenuto nell�insieme

    un metodo addElemento (double valore, int ripetizioni) che aggiunge al multiInsieme l�elemento valore con il numero di ripetizioni indicato. Attenzione: se nel multinsieme c�� gi� un elemento con lo stesso valore, viene solo aggiornato il suo campo ripetizioni, altrimenti viene aggiunto all�arraylist un nuovo MultiElemento.


    ====> Cosa si intende per una variabile d'istanza SET di tipo arrayList? Devo creare un metodo SET con parametro un arraylist? La prima parte dell'esercizio l'ho gi� eseguita!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Klibion Visualizza il messaggio
    ====> Cosa si intende per una variabile d'istanza SET di tipo arrayList? Devo creare un metodo SET con parametro un arraylist? La prima parte dell'esercizio l'ho gi� eseguita!
    Presumo, "a naso" una cosa tipo:

    private ArrayList<MultiElemento> set;
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    doppio post, scusate
    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
    Registrato dal
    Jan 2017
    Messaggi
    22
    In effetti hai ragione. Dopo averci ragionato, ho capito che intendeva solamente il nome della variabile e non il metodo. Ho scritto la prima parte in questo modo, ma non ho capito se vuole che le variabili siano le stesse per entrambe le classi, OPPURE se "valore" e "ripetizioni" siano variabili diversi per classe. Io non credo, quindi come faccio a richiamarle? Dovrei estendere la classe madre e richiamarle con SUPER?

    public class MultiElemento {

    final double valore=3.14;
    int ripetizioni=5;

    public double getValore (){
    return valore;
    }

    public int getRipetizioni (){
    return ripetizioni;
    }

    public void setRipetizioni (int ripetizioni){

    this.ripetizioni=ripetizioni;
    if (ripetizioni<1){
    ripetizioni=1;
    }

    }

    la seconda invece l'ho scritta così, ma c'è palesemente qualcosa che non va...chi mi aiuta?:



    import java.util.ArrayList;


    public class MultiInsieme {

    ArrayList<MultiElemento>set;
    MultiElemento x;

    public MultiInsieme (ArrayList<MultiElemento>set){

    this.set=set;
    set = new ArrayList<MultiElemento>();
    }

    public void getRipetizioni (double valore){

    for (int i=0; i<set.size(); i++){
    if (i==valore){
    ripetizioni++;
    }
    }
    }


    public void addElemento ( double valore, int ripetizioni ){

    for (int i=0; i<set.size(); i++){
    if (i==valore){
    ripetizioni++;
    }
    set.add(x);
    }
    }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22
    Ho provato con questa soluzione:

    public class MultiInsieme {

    ArrayList<MultiElemento>set;
    MultiElemento x;

    public MultiInsieme (ArrayList<MultiElemento>set){

    this.set=set;
    set = new ArrayList<MultiElemento>();
    }

    public void getRipetizioni (double valore){

    for (int i=0; i<set.size(); i++){
    if (i==x.valore){
    x.ripetizioni++;
    }
    }
    }


    public void addElemento ( double valore, int ripetizioni ){

    for (int i=0; i<set.size(); i++){
    if (i==x.valore){
    x.ripetizioni++;
    }
    set.add(x);
    }
    }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Klibion Visualizza il messaggio
    codice:
    public class MultiElemento {
           
        final double valore=3.14;
        int ripetizioni=5;
    Il testo iniziale dice espressamente "un costruttore che crea un MultiElemento dati valore e ripetizioni". Quindi quale è il senso di questi dati schiantati così a caso?



    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Ho provato con questa soluzione:
    Innanzitutto:

    private ArrayList<MultiElemento> set;

    Poi quel MultiElemento x; ti assicuro che NON ti serve.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    codice:
        public MultiInsieme (ArrayList<MultiElemento>set){
            
            this.set=set;
            set = new ArrayList<MultiElemento>();
        }
    Il testo dice "La classe deve avere: · un costruttore che crea un MultiInsieme vuoto".
    Che senso ha ricevere come argomento una lista, assegnarla a set e poi subito dopo assegnare di nuovo a set un ArrayList vuoto? NON ha senso.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    codice:
         public void getRipetizioni (double valore){
             
             for (int i=0; i<set.size(); i++){
                 if (i==x.valore){
                    x.ripetizioni++;
                 }
             }
         }
    getRipetizioni che cosa ti fa pensare? Che dovrebbe RESTITUIRE il numero di ripetizioni. E allora che senso ha il void come tipo di ritorno? E poi anche l'incremento di ripetizioni su un oggetto??

    E poi: perché confronti un indice i con un valore double? Sono tutte cose che NON hanno alcun senso.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    codice:
        public void addElemento ( double valore, int ripetizioni ){
            
            for (int i=0; i<set.size(); i++){
                 if (i==x.valore){
                    x.ripetizioni++;
                 }
                 set.add(x);
             }
        }
    Il testo dice:

    un metodo addElemento (double valore, int ripetizioni) che aggiunge al multiInsieme l'elemento valore con il numero di ripetizioni indicato. Attenzione: se nel multinsieme c'è già un elemento con lo stesso valore, viene solo aggiornato il suo campo ripetizioni, altrimenti viene aggiunto all'arraylist un nuovo MultiElemento

    Questo vuol dire una cosa abbastanza semplice: ricevo un valore, vado a cercare questo valore in tutti gli oggetti MultiElemento presenti nel ArrayList (che l'oggetto MultiInsieme mantiene al suo interno). Se lo trovo, gli aggiungo semplicemente il numero di ripetizioni. Se alla FINE di tutto il ciclo non lo trovo, allora inserisco un nuovo oggetto MultiElemento.
    Ti sembra più chiaro?



    P.S. dovresti sforzarti di fare qualche ragionamento in più.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22
    Il mio problema principale è che non capisco quello di cui sta parlando. Non riesco a trovare l'utilità di quello che scrivo. Che cos'è sto MultiElemento? una banana? a cosa mi è utile? cosa mi rappresentano quei valori? per questo non riesco a costruire un discorso sopra.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22
    Quando il testo mi chiedeva di creare un MultiInsieme vuoto, pensavo che mi dicesse di creare un ArrayList MultiInsieme senza elementi al suo interno. Avevo capito che questo ArrayList rappresentasse il MultiInsieme e che dovessi inserire i MultiElementi al suo interno. Inoltre non ho capito se le variabili sono le stesse per entrambe le classi e se le dovrei collegare...

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Che cos'è sto MultiElemento? una banana? a cosa mi è utile? cosa mi rappresentano quei valori?
    Cosa sia quel "valore" effettivamente il testo NON lo dice ..... dei metri? dei litri? il peso delle patate? Boh, non si sa.
    Ma alla fin fine, se ci pensi e ragioni meglio, NON serve granché sapere COSA siano quei double.

    Un oggetto MultiElemento associa un valore con un numero di ripetizioni. Es. 3.45 associato a 7 ripetizioni.
    E un oggetto MultiInsieme contiene N oggetti MultiElemento grazie al ArrayList.

    Quindi in 1 oggetto MultiInsieme puoi avere es. 3 oggetti MultiElemento del tipo:

    il primo MultiElemento: 4.5; 3 ripetizioni
    il secondo MultiElemento: 7.3; 2 ripetizioni
    il terzo MultiElemento: 8; 5 ripetizioni

    A te è chiesto di implementare 2 metodi in particolare in MultiInsieme:
    - dammi le ripetizioni dato un valore
    - aggiungi ripetizioni per un dato valore

    Il primo è facile: cerco il valore nei MultiElemento nella lista, lo trovo? ok, restituisco le ripetizioni. Non lo trovo? ok, potresti restituire 0 (il testo questo NON lo precisa ...)
    Il secondo è solo un pelino meno facile: cerco il valore nei MultiElemento nella lista, lo trovo? ok, MODIFICO solo quell'oggetto MultiElemento trovato, aggiornando le ripetizioni. Non lo trovo? ok, inserisco un NUOVO oggetto MultiElemento.


    Alla fine, se ci pensi, serve molto sapere se quel valore sono il peso delle patate, dei litri, dei chilometri o che altro??
    Ultima modifica di andbin; 22-01-2017 a 22:23
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22
    Leggendo quello che scrivi fila tutto, però non saprei come metterlo in pratica al livello di codice :/

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.