функция возвращает ArrayList, пустой от данных

#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 , который принимает other Product в качестве единственного аргумента и инициализирует его состояние из этого.

2. можете ли вы показать мне, как это можно сделать, пожалуйста

Ответ №1:

Для сравнения значений используйте .equals(...) вместо ==

 if(productList.get(x).getProductDescribtion().equals(productBox.getValue()))
 

… вместо

 if(productList.get(x).getProductDescribtion() == productBox.getValue())