我正在尝试制作餐厅菜单选择器,我有一个班级要下订单,而另一个班级则连接到选择饮料菜单上
我的订单类(表)具有正在运行的总计变量。我正在尝试将商品价格添加到运行总额中,但语法陷入困境
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
您的问题是,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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。