Добавляете к бегущей итоговой переменной? - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь сделать селектор меню ресторана. У меня есть один класс для заказа и другой класс, который связан с меню выбора напитка.

Мой класс заказа (таблица) имеет переменную промежуточного итога. Я пытаюсь добавить цену предмета к итоговой сумме, но у меня возникают проблемы с синтаксисом

selectedItem.getPrice();

        Table tbl = new Table();
        tbl.setRunningTotal() + selectedItem.getPrice();

. Правильно ли я создаю 'intance' класса таблицы, а затем использую сеттер set run total 'и добавив, что к выбранным элементам питания получают метод определения цены?

Вот полный класс' Table '

package sample;

import java.util.ArrayList;

public class Table {
   private ArrayList<FoodDrinkController> customers;
   private String tablenumber;
   private ArrayList order;
   private double runningTotal;
   private double totalCalories;

   public Table(ArrayList<FoodDrinkController> customers, String tablenumber, ArrayList order, double runningTotal, double totalCalories) {
      this.customers = customers;
      this.tablenumber = tablenumber;
      this.order = order;
      this.runningTotal = runningTotal;
      this.totalCalories = totalCalories;
   }

   public Table() {

   }

   public ArrayList<FoodDrinkController> getCustomers() {
      return customers;
   }

   public void setCustomers(ArrayList<FoodDrinkController> customers) {
      this.customers = customers;
   }

   public String getTablenumber() {
      return tablenumber;
   }

   public void setTablenumber(String tablenumber) {
      this.tablenumber = tablenumber;
   }

   public ArrayList getOrder() {
      return order;
   }

   public void setOrder(ArrayList order) {
      this.order = order;
   }

   public double getRunningTotal() {
      return runningTotal;
   }

   public void setRunningTotal(double runningTotal) {
      this.runningTotal = runningTotal;
   }

   public double getTotalCalories() {
      return totalCalories;
   }

   public void setTotalCalories(double totalCalories) {
      this.totalCalories = totalCalories;
   }


}

Буду признателен за любую помощь. Все, что я пытаюсь сделать, это добавить цену на продукты питания. атрибут для атрибута промежуточного итога в другом классе

**** РЕДАКТИРОВАТЬ ****

Это SelectDrinkControlleer GUI class

package sample;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.stage.Stage;

import java.util.ArrayList;

public class SelectDrinkControllerGUI extends Application {




    public ListView<FoodDrink> lvDrinks;
    private FoodDrinkController fdc = new FoodDrinkController();
    private Table table;











    public SelectDrinkControllerGUI() {


    }

    @Override
    public void start(Stage stage) throws Exception {

    }


    // Filters the menu items so i just displays drinks in the listview
    @FXML
    public void initialize() {
        System.out.println("initialize");
        ObservableList<FoodDrink> items = fdc.filterByType(Global.itemtype.DRINK);
        ArrayList<FoodDrink> stringList = new ArrayList<>();
        //System.out.println(items);
        for (FoodDrink item : items) {
            stringList.add(item);


        }

        lvDrinks.setItems(FXCollections.observableList(stringList));

    }

    // Button that adds the selected item to the order array
    public void addEntry(ActionEvent actionEvent){
        FoodDrink selectedItem = lvDrinks.getSelectionModel().getSelectedItem();
        fdc.order.add(selectedItem);

        selectedItem.getPrice();

        Table tbl = new Table();
        tbl.setRunningTotal(tbl.getRunningTotal() + selectedItem.getPrice());

        System.out.println("" + tbl.getRunningTotal());

        System.out.println(fdc.order);



    }
}

И это класс FoodDrinkController, который обрабатывает все типы продуктов питания

package sample;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import java.util.ArrayList;

public class FoodDrinkController {
    private ArrayList<FoodDrink> fullList = new ArrayList<>();




    public ArrayList<FoodDrink> order = new ArrayList<FoodDrink>();








    //constructor with some stuff in it
    public FoodDrinkController(){

        FoodDrink cola = new FoodDrink("Coca Cola", 2.99, Global.itemtype.DRINK);
        FoodDrink pepsi = new FoodDrink("Pepsi", 2.99, Global.itemtype.DRINK);
        FoodDrink lemmonade = new FoodDrink("Lemmonade", 2.99, Global.itemtype.DRINK);
        FoodDrink garlicbread = new FoodDrink("Garlic Bread", 4.99, Global.itemtype.STARTER);

        FoodDrink burger = new FoodDrink("burger", 7.99, Global.itemtype.MAIN);

        fullList.add(cola);
        fullList.add(pepsi);
        fullList.add(lemmonade);
        fullList.add(burger);
        fullList.add(garlicbread);



    }


    public ObservableList<FoodDrink> filterByType(Global.itemtype itemtype){
        ArrayList<FoodDrink> subList = new ArrayList<>();
        for (FoodDrink listItem : fullList){
            if(listItem.getItemtype().equals(itemtype)){
                subList.add(listItem);
            }
        }
        return FXCollections.observableArrayList(subList);
    }



    //plain old main method
    public static void main(String[] args) {
        //SelectDrinkController fbtd = new SelectDrinkController();
        //System.out.println(fbtd.filterByType("DRINK"));

        FoodDrinkController fdc = new FoodDrinkController();
        //System.out.println(fdc.filterByType(Global.itemtype.DRINK));

    }
}

1 Ответ

0 голосов
/ 13 марта 2020

Ваша проблема в том, что вы создаете другой экземпляр Table каждый раз, когда добавляете запись.

Вы хотите создать Table один раз (я предполагаю.) Возможно, в конструктор SelectDrinkControllerGUI:

У вас уже есть переменная экземпляра table в SelectDrinkControllerGUI, поэтому просто измените конструктор на:

public SelectDrinkControllerGUI() {
    this.table = new Table();
}

Затем обновите addEntry(...):

public void addEntry(ActionEvent actionEvent){
    FoodDrink selectedItem = lvDrinks.getSelectionModel().getSelectedItem();
    fdc.order.add(selectedItem);

    table.setRunningTotal(table.getRunningTotal() + selectedItem.getPrice());

    System.out.println(table.getRunningTotal());

    System.out.println(fdc.order);
}

Кроме того, вам не нужен "" + для распечатки двойных чисел. Просто сделайте то, что я сделал выше:

System.out.println(tbl.getRunningTotal());

Дайте мне знать, если у вас все еще есть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...