Java 添加到运行总变量?
我想做一个餐馆菜单选择器 我有一个订单类和另一个连接到选择饮料菜单的类 我的订单类表有一个正在运行的total变量。 我试图把一个项目的价格加到总价格中,但是语法有问题Java 添加到运行总变量?,java,javafx,Java,Javafx,我想做一个餐馆菜单选择器 我有一个订单类和另一个连接到选择饮料菜单的类 我的订单类表有一个正在运行的total变量。 我试图把一个项目的价格加到总价格中,但是语法有问题 selectedItem.getPrice(); Table tbl = new Table(); tbl.setRunningTotal() + selectedItem.getPrice(); 我创建table类的“intance”,然后使用运行total“setter”的集合并将其添加到
selectedItem.getPrice();
Table tbl = new Table();
tbl.setRunningTotal() + selectedItem.getPrice();
我创建table类的“intance”,然后使用运行total“setter”的集合并将其添加到所选fooditems get price方法中,这样做正确吗
这是完整的“桌子”课程
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;
}
}
任何帮助都将不胜感激
我所要做的就是在另一个类的running total属性中添加food price属性
****编辑****
这是SelectDrinkControllerGUI类
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));
}
}
您的问题是,每次添加条目时,您都在创建另一个表实例 我猜一次,你想创建一个表。可能在SelectDrinkControllerGUI的构造函数中: SelectDrinkControllerGUI中已经有一个实例变量表,因此只需将构造函数更改为:
public SelectDrinkControllerGUI() {
this.table = new Table();
}
然后更新附录…:
此外,您不需要+来打印双打。只要做我上面所做的:
System.out.println(tbl.getRunningTotal());
如果您还有问题,请告诉我。table.setRunningTotaltable.getRunningTotal+selectedItem.getPrice;不过,如果表中有addToRunningTotaldouble price方法会更好。@NomadMaker非常感谢您。为了测试的目的,现在我只是想把当前的值打印到控制台上,但它就是不打印。我试过System.out.printlntbl.getRunningTotal;但我只是得到了一个巨大的错误?事实上我已经修复了,但它似乎没有添加到实际的运行总数中。为了测试它,我打印了get running total方法,但即使添加了更多的项,它仍然保持不变。这看起来像是一个可疑的任务。如果你有关于语言的问题来帮助你做好作业,那么就直接问“搜索”他们可能已经回答了。但是Stackoverflow不是来帮你做家庭作业的。那很有效!!谢谢,没问题!如果你愿意,你也可以接受@NomadMaker的建议,创建一个addToRunningTotalDuble price,让它更干净。
System.out.println(tbl.getRunningTotal());