Проблемы с печатью объектов в ArrayList с использованием Enhanced For Loop - PullRequest
1 голос
/ 16 апреля 2019

Я не могу заставить Объекты Продукта что-либо распечатать, используя цикл Enhanced for.Все выходит ноль или 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;
    }
}

Ответы [ 3 ]

2 голосов
/ 16 апреля 2019

Вы выполняете обратные присваивания в конструкторе:

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;
    }
1 голос
/ 16 апреля 2019

У вас есть свои задания назад в конструкторе.Оно должно быть:

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;
}
0 голосов
/ 16 апреля 2019

Вы неправильно устанавливаете переменные в своем конструкторе, т.е.

startId = id; должно быть id = startId;

Вы также должны добавить @Override к вашему toString() методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...