Visualizzazione dei risultati da 1 a 10 su 20

Hybrid View

  1. #1
    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.

  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
    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

  3. #3
    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
    Quando il testo mi chiedeva di creare un MultiInsieme vuoto, pensavo che mi dicesse di creare un ArrayList MultiInsieme senza elementi al suo interno.
    Intende che quando fai new MultiInsieme() (nota, senza passare nulla in argomento al costruttore!) nel costruttore vai ad inizializzare lo "stato" dell'oggetto MultiInsieme costruendo un ArrayList "vuoto", senza elementi.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    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...
    Le due classi SONO in relazione, nel senso che 1 oggetto MultiInsieme PUO' contenere (nel ArrayList) N oggetti MultiElemento.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Leggendo quello che scrivi fila tutto, però non saprei come metterlo in pratica al livello di codice :/
    Allora, riassumiamo:

    Classe MultiElemento:
    - variabile di istanza valore (double E final e "privato")
    - variabile di istanza ripetizioni (int e "privato")
    - costruttore che riceve valore e ripetizioni e li assegna alle variabili di istanza. Ricorda la questione del se < 1)
    - metodi getValore() / getRipetizioni() / setRipetizioni(int ripetizioni) che sono banali e ovvi (su cosa fanno)
    - metodo toString() che descrive lo stato dell'oggetto (vedi il testo)

    Classe MultiInsieme:
    - variabile di istanza set (ArrayList<MultiElemento>)
    - costruttore senza argomenti che crea un ArrayList "vuoto", senza elementi
    - metodi getRipetizioni(double valore) / addElemento(double valore, int ripetizioni) come ho già ampiamente descritto.


    All'interno di MultiInsieme ti serviranno solamente 3 metodi di ArrayList. Il size() ti serve per il ciclo, il get(int indice) ti serve per ottenere l'oggetto MultiElemento i-esimo e add(MultiElemento) ti serve per inserire un oggetto MultiElemento (che devi costruire tu nel addElemento) dentro il ArrayList.
    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
    package provadue;
    public class MultiElemento {

    private final double valore;
    private int ripetizioni;

    public double getValore (){
    return valore;
    }

    public int getRipetizioni(){
    return ripetizioni;
    }

    public void setRipetizioni (int ripetizioni){
    this.ripetizioni=ripetizioni;
    if(ripetizioni<1){
    ripetizioni=1;
    }
    }

    public MultiElemento (double valore){
    this.valore=valore;
    ripetizioni=1;

    }

    public MultiElemento (double valore, int ripetizioni){
    this.ripetizioni=ripetizioni;
    this.valore=valore;
    if(ripetizioni<1){
    ripetizioni=1;
    }
    }

    public String toString(){
    return "elemento " +valore+ "occorrenze " +ripetizioni;
    }
    }

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


    import java.util.ArrayList;


    public class MultiInsieme {
    MultiElemento x;
    ArrayList<MultiElemento>set;

    public MultiInsieme (){
    new ArrayList<MultiInsieme>();
    }

    public int getRipetizioni (double valore){

    for(MultiElemento i:set){
    if(i==x);
    }
    return x.getRipetizioni();
    }

    public void addElemento (double valore,int ripetizioni){
    for (MultiElemento i:set){
    if (i==x){
    x.setRipetizioni(x.getRipetizioni() + 1);
    }
    set.add(x);
    }
    }
    }


    Mi sto avvicinando ad una versione corretta??

  5. #5
    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
    Mi sto avvicinando ad una versione corretta??
    Ancora un pelino lontano .....

    La classe MultiElemento non è ancora corretta al 100%. Campi ok, metodi getter ok, costruttore MultiElemento(double valore) ok.
    Ma l'altro costruttore e setRipetizioni sono errati perché this.ripetizioni fa riferimento al campo mentre solo ripetizioni fa riferimento al parametro. Peccato che nel if vai a testare e assegnare SOLO al parametro.
    Comunque questa logica si può fare con 1 sola riga usando l'operatore condizionale ? :

    Il toString() è ok, manca solo uno spazio prima di occorrenze.
    Nota che per convenzione, i costruttori tipicamente si mettono prima di tutti i metodi, dopo le variabili di istanza.

    Classe MultiInsieme:
    - ti ripeto che NON serve avere un campo MultiElemento x;
    - getRipetizioni e addElemento sono sbagliatissimi. Non per il for-each (che è ok) ma per il if (i==x) che NON è appropriato in questo contesto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2017
    Messaggi
    22
    Quello che mi crea problemi nei ragionamenti è questo:

    Io mi immagino un'oggetto MultiElemento con al suo interno le variabili quantità e valore. Poi penso che per accedere ad esse e quindi svolgere l'esercizio per la seconda classe, prima dovrei accedere all'oggetto che le contiene! Dato che l'oggetto non lo possiedo, me lo devo creare (x).

  7. #7
    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
    Non capisco per quale motivo non abbia bisogno di un oggetto "x" di tipo MultiElemento per svolgere l'esercizio, dato che "valore" è una variabile legata ad esso proprio come ripetizione!
    Ti ripeto che NON ti serve tenere un campo MultiElemento x. Se sfrutti il "for-each" hai già

    for (MultiElemento elemento : set)

    Questa variabile MultiElemento elemento È sufficiente.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Quello che mi crea problemi nei ragionamenti è questo:
    Io mi immagino un'oggetto MultiElemento con al suo interno le variabili quantità e valore.
    Sì, ciascun oggetto MultiElemento ha i SUOI campi valore e ripetizioni distinti da quelli di tutti gli altri oggetti MultiElemento.

    Quote Originariamente inviata da Klibion Visualizza il messaggio
    Poi penso che per accedere ad esse e quindi svolgere l'esercizio per la seconda classe, prima dovrei accedere all'oggetto che le contiene!
    L'oggetto MultiElemento (quello i-esimo nel ArrayList) ce l'hai.

    for (MultiElemento elemento : set)

    Su questo DEVI usare i metodi getValore() ecc...
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.