user4608261
user4608261

Reputation:

Arraylist not displaying the right output

My main class code

{
     ArrayList<Item> items = new ArrayList<Item>();
     Scanner file = new Scanner(kk.class.getResourceAsStream("product.txt"));
     while (file.hasNextLine()) { 
        String[] sp = file.nextLine().split(",");
        // extract item number, description, price and type
        itemNum = Integer.parseInt(sp[0]);
        des = sp[1];
        price = Integer.parseInt(sp[2]);
        Item objt = new Item(itemNum, des, price); // Creating a new object
        items.add(objt); // Adding it to the list
     }
     System.out.println(items);
} 

output I am getting

[dada.Item@4a5d4a62, dada.Item@32be8e12, dada.Item@7c6159c4, dada.Item@5b4c92a7, dada.Item@3040c5,

My item class code

 private int itemNum = 0;
private String des = "";
private int price = 0;

public Item(int i, String d, int p) {
    itemNum = i;
    des = d;
    price = p;
}

Upvotes: 0

Views: 54

Answers (1)

Prudhvi
Prudhvi

Reputation: 2353

You're printing the Item reference's address instead of the fields inside your Item object. You have print the fields inside each Item object by looping through them.

Replace this line

System.out.println(items);

with

for(Item i : items) 
{
    System.out.println(i.getItemNum()+" "+i.getDes()+" "+i.getPrice());
}

Change the class so that you could access your private fields

private int itemNum = 0;
private String des = "";
private int price = 0;

public Item(int i, String d, int p) {
    itemNum = i;
    des = d;
    price = p;
}

public void setItemNum(int itemNum) {
    this.itemNum = itemNum;
}
public int getItemNum() {
    return itemNum;
}

public void setDes(String des) {
    this.des = des;
}
public String getDes() {
    return des;
}

public void setPrice(int price) {
    this.price = price;
}
public int getPrice() {
    return price;
}

Upvotes: 1

Related Questions