为什么最后一个对象仅存储在我的数组中?请帮忙。
这是创建对象的主要方法。
public class Main {
public static void main(String[] args) {
Service sv = new Service();
Product pd1 = new Product();
pd1.setName("Apple");
pd1.setCategory("Perishable");
sv.addProduct(pd1);
Product pd2 = new Product();
pd2.setName("Banana");
pd2.setCategory("Perishable");
sv.addProduct(pd2);
Product pd3 = new Product();
pd3.setName("Flour");
pd3.setCategory("Nonperishable");
sv.addProduct(pd3);
Product pd4 = new Product();
pd4.setName("Mani");
pd4.setCategory("Nonperishable");
sv.addProduct(pd4);
Product pd5 = new Product();
pd5.setName("Mango");
pd5.setCategory("Perishable");
sv.addProduct(pd5);
sv.reviewProduct();
}
}
public class Service {
Product[] myProduct = new Product[10];
public void addProduct(Product p) {
for(int i = 0;i<myProduct.length;i++) {
//myProduct[i] = new Product();
myProduct[i] = p;
}
}
public void reviewProduct() {
//for(int i=0;i<myProduct.length;i++) {
System.out.println(myProduct[1].getName());
System.out.println(myProduct[1].getCategory());
//}
}
}
答案 0 :(得分:0)
public void reviewProduct() {
//for(int i=0;i<myProduct.length;i++) {
System.out.println(myProduct[1].getName());
System.out.println(myProduct[1].getCategory());
//}
}
您在仅获取索引1的循环中使用myProduct [1]。您需要使用myProduct [i]
答案 1 :(得分:0)
您的overflow-y
函数会覆盖数组中的先前元素,因为它会用相同的元素填充数组。
您应该改用List,并将addProduct
元素放入其中。如有必要,您可以稍后将其转换为数组。
答案 2 :(得分:0)
如Alex所述,您应该使用列表。
以下是您的服务等级的解决方案:
public class Service {
List<Product> myProducts = new ArrayList<Product>();
public void addProduct(Product p) {
myProduct.add(p);
}
public void reviewProduct() {
for(int i=0;i<myProduct.length;i++) {
System.out.println(myProduct[i].getName());
System.out.println(myProduct[i].getCategory());
}
}
}
希望这会有所帮助!