Повторяется результат вывода в массиве
проблема заключается в том что при выводе элементов массива выводится и повторяется значения одного элемента ,думаю что алгоритмическая ошибка может быть допущена либо в конструкторе класса Cart или в методе ShowInfo():
Main.java:
package com.company;
public class Main {
public static void main(String[] args) {
Cart cart =new Cart(10);
Item item=new Item("macintosh",1500);
Item item2=new Item("HP",2500);
Item item3=new Item("Dell",3500);
Item item4=new Item("Samsung",4500);
Item item5=new Item("Sony",5500);
cart.addItem(item);
cart.addItem(item2);
cart.addItem(item3);
cart.addItem(item4);
cart.addItem(item5);
cart.showInfo();
System.out.println();
}
}
Item.java:
package com.company;
public class Item {
private static String name;
private static float price;
public Item(String name,float price){
Item.name =name;
Item.price =price;
}
public Item() {
}
public static float getPrice(){
return price;
}
public static String getName(){
return name;
}
}
Cart.java:
package com.company;
public class Cart {
private static Item[] stack;
private static int topIndex;
public Cart(int capacity){
stack = new Item[capacity];
topIndex=-1;
}
public static void addItem(Item item){
push(item);
}
public static void push(Item item){
topIndex++;
stack[topIndex]=item;
}
public void showInfo(){
for(Item item:stack)
System.out.println("Item has name: "+item.getName()+" and costs: "+item.getPrice());
}
}
Заранее спасибо.
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Дело в том что вы итерируете весь список когда нужно итерировать только добавленные т. е. те которые определены, ещё в добавок статические поля которые одни на все объекты. Каждый переопределяет значение у всех
Main.java:
package com.company;
public class Main {
public static void main(String[] args) {
Cart cart =new Cart(10);
Item item=new Item("macintosh",1500);
Item item2=new Item("HP",2500);
Item item3=new Item("Dell",3500);
Item item4=new Item("Samsung",4500);
Item item5=new Item("Sony",5500);
cart.addItem(item);
cart.addItem(item2);
cart.addItem(item3);
cart.addItem(item4);
cart.addItem(item5);
cart.showInfo();
System.out.println();
}
}
Item.java:
package com.company;
public class Item {
private String name;
private float price;
public Item(String name,float price){
this.name = name;
this.price = price;
}
public Item() {
}
public float getPrice(){
return this.price;
}
public String getName(){
return this.name;
}
}
Cart.java:
package com.company;
public class Cart {
private static Item[] stack;
private static int topIndex;
public Cart(int capacity){
this.stack = new Item[capacity];
this.topIndex=-1;
}
public void addItem(Item item){
push(item);
}
public void push(Item item){
this.topIndex++;
this.stack[topIndex]=item;
}
public void showInfo(){
for(int index = 0; index <= this.topIndex; index++)
System.out.println("Item has name: "+ this.stack[index].getName()+" and costs: "+ this.stack[index].getPrice());
}
}
так попробуйте