簡體   English   中英

使用Enhanced For Loop打印ArrayList中的對象時遇到問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM