Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Trovare massimo per nome

    Aiuto! ho un piccolo problema con un programma in java.Dopo aver definito una collezione di oggetti con nome tipo e costo vorrei trovare, inserendo in mome, chi ha costo massimo per quel nome. Potreste Aiutarmi? potreste scrivermi il codice?

    Grazie mille a tutti.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Trovare massimo per nome

    Originariamente inviato da rmario3333
    Aiuto! ho un piccolo problema con un programma in java.Dopo aver definito una collezione di oggetti con nome tipo e costo vorrei trovare, inserendo in mome, chi ha costo massimo per quel nome. Potreste Aiutarmi? potreste scrivermi il codice?
    No ... prima dovresti spiegare meglio diverse cose (e magari postare qualche spezzone di codice che hai scritto).

    Parli di "collezione" ... di che tipo?? Vector? ArrayList?? Hai usato i generics? E poi parli di un "oggetto" che ha nome, tipo e costo ... come è fatto questo oggetto?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Ecco il codice da me scritto

    Questo è il codice che ho scritto, cercaMaxConNome non funziona correttamente, dato il nome mi confronta il primo elemento con tutti quelli che hanno il nome specificato, io invece vorrei che confrontasse solo quelli con il nome specificato.

    P.S. Il mobile ha metodi getTipo() e setTipo(STring tipo), getMarca() e setMarca(String marca) , getCosto() e setCosto(double costo).

    Dove ho sbagliato? Potresti aiutarmi?



    package mobilificio;

    import java.util.*;

    public class Mobilificio {

    List lista = new ArrayList();

    public void addMobile(Mobile m) {
    lista.add(m);
    }

    public Mobile cercaMobile(String tipo) {
    for(int i = 0; i<lista.size(); i++) {
    Mobile m = (Mobile) lista.get(i);
    if (m.getTipo().equals(tipo)) {
    return m;
    }
    }
    return null;
    }

    public void stampaMobili() {
    Mobile m = null;
    for (int i = 0; i<lista.size(); i++) {
    m = (Mobile) lista.get(i);
    System.out.println("");
    System.out.println("Marca:" + " " + m.getMarca());
    System.out.println("Tipo:" + " " + m.getTipo());
    System.out.println("Costo:" + " " + m.getCosto());
    }
    }

    public Mobile cercaMaxMobile(String tipo) {
    int a = 0;
    Mobile m = (Mobile)lista.get(0);
    Mobile s = (Mobile)lista.get(0);
    for (int i = 0; i<lista.size(); i++) {
    m = (Mobile)lista.get(i);
    if((m.getTipo().equals(tipo)) && (m.getCosto() > s.getCosto())) {
    s = m;
    a = a+1;
    }

    }
    if( a == 0){
    System.out.println("Nessun mobile presente di quel tipo");
    return null;
    }else{
    return s;
    }
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Non vedo alcun metodo chiamato cercaMaxConNome.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Scusa ho sbagliato il metodo è cercaMaxMobile, il metodo funziona un pò male, quando inserisco il tipo di mobile per il quale voglio in massimo mi confronta il primo elemento della lista con tutti gli elementi col nome da me specificato, se il primo elemento ha costo minore di almeno uno degli elementi da me specificati mi ritorna il massimo per nome, altrimenti se il primo elemento ha costo maggiore di tutti gli elementi da me specificati mi ritorna il primo elemento.In pratica funziona cosi:

    Io ho una ArrayList con questi elementi

    I° Elemento
    marca = Scavolini
    Tipo = tavolino
    costo = 30

    II° Elemento
    marca = Divani e Divani
    tipo = divano
    costo =15

    III° Elemento
    marca = ikea
    Tipo = sedia
    costo = 40

    IV ° Elemento
    marca = scavolini
    tipo = sedia
    costo = 20

    V° Elemento
    marca = Le fabieu
    tipo = divano
    costo = 12

    dopo aver specificato nella principale un sottoprogramma schermoCercaMaxMobile che richiama cercaMaxMobile della classe mobilificio se il nome da me inserito è Sedia il risultato ottenuto è:
    Prezzo Max per elemento specificato è:
    marca = ikea
    Tipo = sedia
    costo = 40

    se invece il nome da me specificato è divano il programma mi ritorna questo risultato:
    Prezzo Max per elemento specificato è:
    marca= Scavolini
    tipo = tavolino
    costo= 30

    Come faccio ad avere il risultato esatto?

    Ti ringrazio infinitamente per la tua pazienza.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Io farei:

    codice:
    public Mobile cercaMaxMobile (String tipo) {
        Mobile m = null;
    
        for (int i = 0; i < lista.size (); i++) {
            Mobile e = (Mobile) lista.get (i);
            if (e.getTipo ().equals (tipo) && (m == null || e.getCosto () > m.getCosto ()))
                m = e;
        }
    
        return m;
    }
    Non è più semplice?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    credo ke tu abbia ragione, ci provo e ti faccio sapere.

  8. #8
    Ho provato il metodo che mi hai mandato, e non funziona correttamente perchè se io voglio sapere il massimo del primo nome che ho nella lista non mi da nessun risultato di ritorno, mentre se inserisco un nome diverso dal primo il risultato è esatto.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Funziona benissimo ....

    codice:
    import java.util.*;
    
    public class Prova
    {
        public static void main (String[] args)
        {
            ListaMobili lm = new ListaMobili ();
    
            lm.add ("Scavolini", "tavolino", 30);
            lm.add ("Ikea", "sedia", 40);
            lm.add ("Scavolini", "sedia", 20);
            lm.add ("Le fabieu", "divano", 12);
            lm.add ("Divani e Divani", "divano", 15);
    
            Mobile m;
    
            m = lm.cercaMaxMobile ("sedia");
            System.out.println (m);
    
            m = lm.cercaMaxMobile ("divano");
            System.out.println (m);
    
            m = lm.cercaMaxMobile ("armadio");  // non esiste!
            System.out.println (m);             // stampa null
        }
    
    }
    
    
    class ListaMobili
    {
        private ArrayList lista;
    
        public ListaMobili ()
        {
            lista = new ArrayList ();
        }
    
        public void add (String marca, String tipo, double costo)
        {
            lista.add (new Mobile (marca, tipo, costo));
        }
    
        public Mobile cercaMaxMobile (String tipo) {
            Mobile m = null;
    
            for (int i = 0; i < lista.size (); i++) {
                Mobile e = (Mobile) lista.get (i);
                if (e.getTipo ().equals (tipo) && (m == null || e.getCosto () > m.getCosto ()))
                    m = e;
            }
    
            return m;
        }
    }
    
    
    class Mobile
    {
        private String marca;
        private String tipo;
        private double costo;
    
        public Mobile (String marca, String tipo, double costo)
        {
            this.marca = marca;
            this.tipo = tipo;
            this.costo = costo;
        }
    
        public String getMarca () { return marca; }
        public String getTipo () { return tipo; }
        public double getCosto () { return costo; }
    
        public String toString ()
        {
            return marca + ", " + tipo + ", " + costo;
        }
    }
    Output:
    codice:
    Ikea, sedia, 40.0
    Divani e Divani, divano, 15.0
    null
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10

    Grazie

    Grazie mille x il tuo aiuto, funziona veramente benissimo!

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.