Creo este pequeño programa..
public static void main(String[] args) { Person P = new Person("will", "Deverson", "15/06/1987", "Bonifico"); Product PC = new Product("Asus VivoBook", "AVB2562", 799.99); Product ROUTER = new Product("TP-Link X3", "X3-201", 142.99); Product ADAPTER = new Product("Aukey Type-C Adapter", "C-778", 11.20); ArrayList<Product> listProduct = new ArrayList<Product>(); listProduct.add(PC); listProduct.add(ROUTER); listProduct.add(ADAPTER); //numero elementi nella lista prodotti int nProducts = listProduct.size(); System.out.println("Il tuo carrello contiene " +nProducts +" elementi: "); for (Product p : listProduct) System.out.println("> name: " +p.getName() +" model: " +p.getModel() +" cost: " +p.getCost() +"€.\n"); //calcolo del totale double total = 0; for (Product p : listProduct){ total = total + p.getCost();; }y cuando ejecuto tengo esta salida:
Il tuo carrello contiene 3 elementi: > name: C-778 model: C-778 cost: 11.2€. > name: C-778 model: C-778 cost: 11.2€. > name: C-778 model: C-778 cost: 11.2€.¿Por qué imprime el modelo de identificación también en el campo de nombre? ¿Y por qué tengo el mismo objeto 3 veces?
Aquí está la clase "Producto" que me pediste que publicara :) Creo que es correcta, mi única duda es sobre usar "esto" en la declaración de las variables.
public class Product { static String name; static String model; static double cost; public Product(String n, String m, double d) { name = m; model = m; cost = d; } public String getName(){ return name; } public String getModel(){ return model; } public double getCost(){ return cost; } }Parece que tiene un problema en su clase "Producto".
Prueba esto:
public class Product { private String name, model; private Double price; public Product(String name, String model, Double price) { this.name = name; this.model = model; this.price = price; } public String getName() { return name; } public String getModel() { return model; } public Double getCost() { return price; } }La clase "Principal" se ve bien.
Y la salida:
Il tuo carrello contiene 3 elementi: > name: Asus VivoBook model: AVB2562 cost: 799.99€. > name: TP-Link X3 model: X3-201 cost: 142.99€. > name: Aukey Type-C Adapter model: C-778 cost: 11.2€. Y puedes cambiar esto: total = total + p.getCost(); a esto: total+=p.getCost(); que es lo mismo que escribiste, pero más limpio :-]