Добавление элемента в arraylist пользователем
Я хочу, чтобы пользователь добавил элемент в существующий arraylist и ввел некоторые переменные, связанные с элементом arraylist, arraylist:
Поэтому я написал следующий код:
ArrayList<FruitShop> shops= new ArrayList<FruitShop>();
Scanner in= new Scanner(System.in);
FruitShop newShop = new FruitShop(null,0.0, new Apples(), new OwnerInfo());
shops.add(newShop);
System.out.println("What is the name of new shop?: ");
newShop.setShopName(int.next());;
System.out.println("Enter initial balance in USD: ");
newShop.setBalance(Double.parseDouble(in.next()));
System.out.println("Enter owner name: ");
newShop.getShopOwner().setName(in.next());
System.out.println("Enter owner age: ");
newShop.getShopOwner().setAge(Integer.parseInt(in.next()));
System.out.println("How many apples does the store have?: ");
newShop.getApplesInfo().setQuantity(Integer.parseInt(in.next()));
System.out.println("What is the price of each apple?:");
newShop.getApplesInfo().setPrice(Double.parseDouble(in.next()));
System.out.println("Your shop has been added! ");
FruitShop.ID= ID;
ID++;
Дело в том, что это выбор из меню "Добавить новый фруктовый магазин", поэтому каждый раз, когда пользователь добавит фруктовый магазин, объект будет называться newShop, а затем старый newShop будет удален! как избежать этой ошибки? p. s: фруктовый магазин состоит из других классов: Яблоки и OwnerInfo Заранее спасибо.
2 ответа:
Вы должны вставить строку
shops.add(newShop);
после того, как все измененияnewShop
сделаны. И, конечно, сделайтеArrayList<FruitShop> shops
в качестве переменной экземпляра. Не создавайте новый список после каждого вызова метода.public class A { private List<FruitShop> shops= new ArrayList<FruitShop>(); public void addShop() { ... shops.add(newShop); } }
ArrayList<FruitShop> shops= new ArrayList<FruitShop>(); Scanner in= new Scanner(System.in); FruitShop newShop = new FruitShop(null,0.0, new Apples(), new OwnerInfo()); System.out.println("What is the name of new shop?: "); newShop.setShopName(int.next());; System.out.println("Enter initial balance in USD: "); newShop.setBalance(Double.parseDouble(in.next())); System.out.println("Enter owner name: "); newShop.getShopOwner().setName(in.next()); System.out.println("Enter owner age: "); newShop.getShopOwner().setAge(Integer.parseInt(in.next())); System.out.println("How many apples does the store have?: "); newShop.getApplesInfo().setQuantity(Integer.parseInt(in.next())); System.out.println("What is the price of each apple?:"); newShop.getApplesInfo().setPrice(Double.parseDouble(in.next())); System.out.println("Your shop has been added! "); shops.add(newShop); // add last of the line when all initialization is done.
Наконец-то сдвиньте свое утверждение
shops.add(newShop);
. После инициализации это делается.