#java #javafx-8
#java #javafx-8
Вопрос:
пытался добавить объект класса в ArralyList объектов, когда пользователь нажимает кнопку в JavaFX. Я пытаюсь добавить объект класса (Product) в список покупок ArrayList, который представляет собой список продуктов. когда я тестирую ArrayList в функции AddToCart(), все в порядке, но когда программа возвращается к main, в ArrayList нет данных
вот мой основной, где я вызываю функцию
ArrayList<Product> shoppingList = new ArrayList<>();
Button btnAddToCart = new Button("Add to cart");
btnAddToCart.setOnAction(e->addToCart(productList,productBox,shoppingList));
вот эта функция
public ArrayList<Product> addToCart(ArrayList<Product> productList, ChoiceBox productBox, ArrayList<Product> shoppingList) {
for(int x =0 ; x<productList.size();x )
{
if(productList.get(x).getProductDescribtion() == productBox.getValue())
{
Product inCartProduct = new Product(productList.get(x).getProductCategory(),productList.get(x).getProductDescribtion(),
productList.get(x).getItemNumber(),productList.get(x).getInStockQty(),productList.get(x).getProductPrice() );
System.out.println("Cart in for loop :>" inCartProduct.toString());
shoppingList.add(inCartProduct);
}
}
for(Product onePr : shoppingList)
{
// System.out.println("Here in the cart : ");
System.out.println("Cart in button function :> " onePr.toString());
// System.out.println("The size of the cart : " shoppingList.size());
}
return shoppingList;
}
Комментарии:
1. Во-первых: реорганизуйте первый
for
, чтобы вместо него использовать зачарованныйfor
цикл. Второе: добавьте конструктор копирования вProduct
, который принимает otherProduct
в качестве единственного аргумента и инициализирует его состояние из этого.2. можете ли вы показать мне, как это можно сделать, пожалуйста
Ответ №1:
Для сравнения значений используйте .equals(...)
вместо ==
if(productList.get(x).getProductDescribtion().equals(productBox.getValue()))
… вместо
if(productList.get(x).getProductDescribtion() == productBox.getValue())