开发者社区> 问答> 正文

添加到运行总变量?

我正在尝试制作餐厅菜单选择器,我有一个班级要下订单,而另一个班级则连接到选择饮料菜单上

我的订单类(表)具有正在运行的总计变量。我正在尝试将商品价格添加到运行总额中,但语法陷入困境

selectedItem.getPrice();

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

创建表类的“实例”,然后使用设置的运行总计“设定者”并将其添加到选定的fooditems获取价格方法中,我是否正确?

这是完整的“ 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;
   }


}```
任何帮助将不胜感激,我所要做的就是将食品价格属性添加到另一个类的运行总计属性中

****编辑****

这是SelectDrinkControlleerGUI类

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));

    }
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 17:51:46 370 0
1 条回答
写回答
取消 提交回答
  • 您的问题是,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());
    

    让我知道您是否还有问题。

    回答来源:Stack Overflow

    2020-03-27 17:52:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载