我有一个Cliente类,它有一个ArrayList,用于存储Jamon,Cereal等类。这个类(Jamon,Cereal等)是从名为Producto的超类扩展而来的。 我需要的是一个数组(除了数组列表),它只存储每个类的precios(double)。这是为了将它们与for循环一起添加。 这是我的代码
Cliente类的代码:
import java.util.List;
import java.util.ArrayList;
public class Cliente extends Persona{
public List<Producto>products=new ArrayList<Producto>();
public void echarAlCarrito(Producto p){
products.add(p);
}
}
Producto类的代码:
public abstract class Producto{
protected double precio;
public void setPrecio(double precio){
this.precio=precio;
}
public double getPrecio(){
return precio;
}
abstract void comprar(Cliente c);
}
Jamon类的代码
public class Jamon extends Producto implements Refrigerable{
protected String marca;
public Jamon(String marca, Double precio){
this.marca=marca;
this.precio=precio;
}
public void setMarca(String marca){
this.marca=marca;
}
public String getMarca(){
return marca;
}
public void comprar(Cliente c){
System.out.println("El cliente ha comprado el jamon");
}
}
我的主要代码:
public class PruebaSupermercado{
double suma;
public static void verCarrito() {
Cliente zoo = new Cliente();
zoo.echarAlCarrito(new Jamon("Fud",15.3));
zoo.echarAlCarrito(new Ropa("GAP",457.5));
zoo.echarAlCarrito(new Cereal("Nestle",36.2));
Cliente hola = new Cliente();
for (Producto a:zoo.products){
a.comprar(hola);
}
}
public static void main(String[] args) {
verCarrito();
}
}
谷物和ropa类与Jamon看起来完全相同(名称等除外)。
所以是的..我的问题是“我如何在Cliente中制作和阵列只包含每个Jamon,Cereal,Ropa类的精确度?”
谢谢
答案 0 :(得分:0)
试试这个:
ArrayList<Double> precios = new ArrayList<Double>();
for (Producto p: products) {
precios.add(p.getPrecio());
}
或者,如果你真的需要一个数组:
double[] precios = new double[products.size()];
for (int i = 0; i < products.size(); i++) {
precios[i] = products.get(i).getPrecio();
}
答案 1 :(得分:0)
您可以使用实现List接口的每个类,但由于您不能存储double(基本类型),因此您必须使用Double。使用Double类的Double.valueof(double d)方法从double获取Double是很简单的。
如果你真的想坚持双原语类型,你必须使用原始数组。