[英]Trouble printing objects in ArrayList using Enhanced For Loop
我無法使用Enhanced for循環讓Product Objects打印出任何東西。 一切都是null或0?
輸出顯示這個?
0null0.0This is the id
0null0.0This is the id
0null0.0This is the id
這是我的代碼:
class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
ArrayList < Product > store1 = new ArrayList < Product > ();
store1.add(new Product(3, "Nike", 300.0));
store1.add(new Product(2, "Addidas", 400.0));
store1.add(new Product(6, "Under Armor", 500.0));
for (Product y: store1) {
System.out.println(y + "This is the id");
}
}
}
class Product {
public int id;
public String name;
public double price;
public Product(int startId, String startName, double startPrice) {
startId = id;
startName = name;
startPrice = price;
}
public int getId() {
return id;
}
public double getPrice() {
return price;
}
public String getName() {
return name;
}
public String toString() {
return id + name + price;
}
}
您正在構造函數中執行向后分配:
public Product(int startId, String startName, double startPrice) {
startId = id;
startName = name;
price = startPrice;
}
讓對象未初始化......
但你的意思是肯定的
public Product(int startId, String startName, double startPrice) {
id = startId;
name = startName;
startPrice = price;
}
您在構造函數中向后指定了作業。 它應該是:
public Product(int startId, String startName, double startPrice) {
id = startId; // Not `startId = id;`
name = startName; // Not `startName = name;`
price = startPrice; // Not `price = startPrice;`
}
或者更好(當你試圖編譯時,這會為你解決問題),不要依賴隱含的this
:
public Product(int startId, String startName, double startPrice) {
this.id = startId;
this.name = startName;
this.price = startPrice;
}
您在構造函數中以錯誤的方式設置變量,即
startId = id;
應該是id = startId;
您還應該將@Override
添加到toString()
方法中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.