提前抱怨文字墙。因此,对于我班级的作业,我必须编制快餐菜单,并且我在删除订购项目按钮时遇到问题。应该发生的是我从四个列表中选择一个项目而不是" order"它可以通过按下按钮或双击。我遇到的问题是我找不到从订购商品列表中删除价格和商品的方法。我认为问题出在getItemLoc方法中,但我看不出有什么问题。这就是我做的,但它不起作用。
// Arrays of selection items
static final String[] JUNK_FOODS = {"Burger", "Hotdog", "Fries", "Pizza"};
static final int[] JUNK_FOODS_PRICE = {199, 150, 99, 299};
static final String[] DESSERTS = {"Ice cream", "Pie", "Cake", "Donut"};
static final int[] DESSERTS_PRICE = {149, 249, 299, 99};
static final String[] FRUIT = {"Apple", "Orange", "Peach", "Banana"};
static final int[] FRUIT_PRICE = {89, 79, 99, 59};
static final String[] BEVERAGE = {"Soda", "Coffee", "Juice", "Water"};
static final int[] BEVERAGE_PRICE = {85, 95, 75, 55};
else if(event.getSource() == deleteItem) { // remove item from ordered list
selectedIndex = itemsOrderedList.getSelectedIndex();
selectedItem = itemsOrderedList.getSelectedItem();
getItemLoc(selectedItem, selectedIndex);
}
/**
* method to remove an ordered item
*/
void removeOrderedItem(String item, int price) {
itemsOrderedList.remove(item);
amount -= price;
amountLabel.setText("$"+(float)amount/100);
}
/**
* method to find what list an item belongs to
*/
void getItemLoc(String item, int price) {
for(int i=0; i<4; i++) {
if(item.equalsIgnoreCase(JUNK_FOODS[i])) {
removeOrderedItem(item, JUNK_FOODS_PRICE[i]);
}
else if(item.equalsIgnoreCase(DESSERTS[i])) {
removeOrderedItem(item, DESSERTS_PRICE[i]);
}
else if(item.equalsIgnoreCase(FRUIT[i])) {
removeOrderedItem(item, FRUIT_PRICE[i]);
}
else if(item.equalsIgnoreCase(BEVERAGE[i])) {
removeOrderedItem(item, BEVERAGE_PRICE[i]);
}
}
}
我把它带给了我的教授,他告诉我,它没有找到任何匹配,这就是为什么该计划不起作用,但之前我可以问为什么我们不得不离开,因为还有另一堂课即将到来在。 我将程序的其余部分放在这里,这样你就可以看到整个程序并测试它,如果你愿意的话。这可能是一件非常简单的事情,我只是没有看到它,但感谢你看一看,祝你有愉快的一天。
import java.awt.*;
import java.awt.event.*;
public class FastFood extends Frame {
// Initial Frame size
static final int WIDTH = 450; // frame width
static final int HEIGHT = 400; // frame height
// Arrays of selection items
static final String[] JUNK_FOODS = {"Burger", "Hotdog", "Fries", "Pizza"};
static final int[] JUNK_FOODS_PRICE = {199, 150, 99, 299};
static final String[] DESSERTS = {"Ice cream", "Pie", "Cake", "Donut"};
static final int[] DESSERTS_PRICE = {149, 249, 299, 99};
static final String[] FRUIT = {"Apple", "Orange", "Peach", "Banana"};
static final int[] FRUIT_PRICE = {89, 79, 99, 59};
static final String[] BEVERAGE = {"Soda", "Coffee", "Juice", "Water"};
static final int[] BEVERAGE_PRICE = {85, 95, 75, 55};
// List and Button control
List junkFoodList;
List dessertList;
List fruitList;
List beverageList;
List itemsOrderedList;
Button addJunkFood;
Button addDessert;
Button addFruit;
Button addBeverage;
Button deleteItem;
Button clearAll;
// Total amount and display
Label amountLabel;
int amount = 0;
/**
* Constructor
*/
public FastFood() {
setTitle("Fast Food To Go");
setLayout(new BorderLayout());
// create display for item selection
Panel itemPanel = new Panel(new GridLayout(2, 1));
add(itemPanel, BorderLayout.CENTER);
// create display and control for junk food selection items
Panel junkFoodPanel = new Panel(new BorderLayout());
itemPanel.add(junkFoodPanel);
Label junkFood = new Label("Fast Food Items", Label.CENTER);
junkFood.setForeground(Color.red);
junkFoodPanel.add(junkFood, BorderLayout.NORTH);
junkFoodList = new List();
for(int i=0; i<JUNK_FOODS.length; i++) {
junkFoodList.add(JUNK_FOODS[i]+ " $" + (float)JUNK_FOODS_PRICE[i]/100);
}
junkFoodPanel.add(junkFoodList, BorderLayout.CENTER);
Panel buttonPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
junkFoodPanel.add(buttonPanel, BorderLayout.SOUTH);
addJunkFood = new Button("Get Food Item");
buttonPanel.add(addJunkFood);
// create display and control for dessert selection items
Panel dessertPanel = new Panel(new BorderLayout());
itemPanel.add(dessertPanel);
Label dessertLabel = new Label("Dessert Items", Label.CENTER);
dessertLabel.setForeground(Color.red);
dessertPanel.add(dessertLabel, BorderLayout.NORTH);
dessertList = new List();
for(int i=0; i<DESSERTS.length; i++) {
dessertList.add(DESSERTS[i]+ " $" + (float)DESSERTS_PRICE[i]/100);
}
dessertPanel.add(dessertList, BorderLayout.CENTER);
buttonPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
dessertPanel.add(buttonPanel, BorderLayout.SOUTH);
addDessert = new Button("Get Dessert Item");
buttonPanel.add(addDessert);
// create display and control for fruit selection items
Panel fruitPanel = new Panel(new BorderLayout());
itemPanel.add(fruitPanel);
Label fruitLabel = new Label("Fruit Items", Label.CENTER);
fruitLabel.setForeground(Color.red);
fruitPanel.add(fruitLabel, BorderLayout.NORTH);
fruitList = new List();
for(int i=0; i<FRUIT.length; i++) {
fruitList.add(FRUIT[i] + " $" + (float)FRUIT_PRICE[i]/100);
}
fruitPanel.add(fruitList, BorderLayout.CENTER);
buttonPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
fruitPanel.add(buttonPanel, BorderLayout.SOUTH);
addFruit = new Button("Get Fruit Item");
buttonPanel.add(addFruit);
// create display and control for beverage selection items
Panel beveragePanel = new Panel(new BorderLayout());
itemPanel.add(beveragePanel);
Label beverageLabel = new Label("Beverage Items", Label.CENTER);
beverageLabel.setForeground(Color.red);
beveragePanel.add(beverageLabel, BorderLayout.NORTH);
beverageList = new List();
for(int i=0; i<BEVERAGE.length; i++) {
beverageList.add(BEVERAGE[i] + " $" + (float)BEVERAGE_PRICE[i]/100);
}
beveragePanel.add(beverageList, BorderLayout.CENTER);
buttonPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
beveragePanel.add(buttonPanel, BorderLayout.SOUTH);
addBeverage = new Button("Get Beverage Item");
buttonPanel.add(addBeverage);
// create display and control for items ordered and amount
Panel orderedPanel = new Panel(new BorderLayout());
add(orderedPanel, BorderLayout.EAST);
// create display and control for items ordered
Panel itemsOrderedPanel = new Panel(new BorderLayout());
orderedPanel.add(itemsOrderedPanel, BorderLayout.CENTER);
Label itemsOrdered = new Label("Items Ordered", Label.CENTER);
itemsOrdered.setForeground(Color.red);
itemsOrderedPanel.add(itemsOrdered, BorderLayout.NORTH);
itemsOrderedList = new List();
itemsOrderedPanel.add(itemsOrderedList, BorderLayout.CENTER);
buttonPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
itemsOrderedPanel.add(buttonPanel, BorderLayout.SOUTH);
deleteItem = new Button("Delete Ordered Item");
buttonPanel.add(deleteItem);
clearAll = new Button("Clear All");
buttonPanel.add(clearAll);
// create display for amount
Panel amountPanel = new Panel(new BorderLayout());
orderedPanel.add(amountPanel, BorderLayout.SOUTH);
Label totalLabel = new Label("Total Amount: ");
amountPanel.add(totalLabel, BorderLayout.WEST);
amountLabel = new Label("$0.00");
amountPanel.add(amountLabel, BorderLayout.CENTER);
// create and add list selection listener
SelectionListener selListener = new SelectionListener();
junkFoodList.addActionListener(selListener);
dessertList.addActionListener(selListener);
fruitList.addActionListener(selListener);
beverageList.addActionListener(selListener);
itemsOrderedList.addActionListener(selListener);
clearAll.addActionListener(selListener);
// create and add button listener
ButtonListener buttonListener = new ButtonListener();
addJunkFood.addActionListener(buttonListener);
addDessert.addActionListener(buttonListener);
addFruit.addActionListener(buttonListener);
addBeverage.addActionListener(buttonListener);
deleteItem.addActionListener(buttonListener);
clearAll.addActionListener(buttonListener);
} // end of constructor
/**
* Listener class for list selection
*/
class SelectionListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String selectedItem;
int selectedIndex;
int itemPrice;
if(event.getSource() == junkFoodList) { // select item from junk food list
selectedIndex = junkFoodList.getSelectedIndex();
selectedItem = junkFoodList.getSelectedItem();
itemPrice = JUNK_FOODS_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
else if(event.getSource() == dessertList) { // select item from dessert list
selectedIndex = dessertList.getSelectedIndex();
selectedItem = dessertList.getSelectedItem();
itemPrice = DESSERTS_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
else if(event.getSource() == fruitList) { // select item from fruit list
selectedIndex = fruitList.getSelectedIndex();
selectedItem = fruitList.getSelectedItem();
itemPrice = FRUIT_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
else if(event.getSource() == beverageList) { // select item from beverage list
selectedIndex = beverageList.getSelectedIndex();
selectedItem = beverageList.getSelectedItem();
itemPrice = BEVERAGE_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
else if(event.getSource() == deleteItem) { // remove item from ordered list
selectedIndex = itemsOrderedList.getSelectedIndex();
selectedItem = itemsOrderedList.getSelectedItem();
getItemLoc(selectedItem, selectedIndex);
}
else if(event.getSource() == clearAll) { // remove everything from ordered list
itemsOrderedList.removeAll();
amount = 0;
amountLabel.setText("$0.00");
}
}
}
/**
* Listener class for button selection
*/
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String selectedItem;
int selectedIndex;
int itemPrice;
if(event.getSource() == addJunkFood) { // get item from junk food list
selectedIndex = junkFoodList.getSelectedIndex();
if(selectedIndex >= 0) {
selectedItem = junkFoodList.getSelectedItem();
itemPrice = JUNK_FOODS_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
}
else if(event.getSource() == addDessert) { // get item from dessert list
selectedIndex = dessertList.getSelectedIndex();
if(selectedIndex >= 0) {
selectedItem = dessertList.getSelectedItem();
itemPrice = DESSERTS_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
}
else if(event.getSource() == addFruit) { // get item from fruit list
selectedIndex = fruitList.getSelectedIndex();
if(selectedIndex >= 0) {
selectedItem = fruitList.getSelectedItem();
itemPrice = FRUIT_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
}
else if(event.getSource() == addBeverage) { // get item from beverage list
selectedIndex = fruitList.getSelectedIndex();
if(selectedIndex >= 0) {
selectedItem = beverageList.getSelectedItem();
itemPrice = BEVERAGE_PRICE[selectedIndex];
addOrderedItem(selectedItem, itemPrice);
}
}
else if(event.getSource() == deleteItem) { // delete item from ordered list
selectedIndex = itemsOrderedList.getSelectedIndex();
selectedItem = itemsOrderedList.getSelectedItem();
getItemLoc(selectedItem, selectedIndex);
}
else if(event.getSource() == clearAll) { // remove everything from ordered list
itemsOrderedList.removeAll();
amount = 0;
amountLabel.setText("$0.00");
}
}
}
/**
* method to add an ordered item
*/
void addOrderedItem(String item, int price) {
itemsOrderedList.add(item);
amount += price;
amountLabel.setText("$"+(float)amount/100);
}
/**
* method to remove an ordered item
*/
void removeOrderedItem(String item, int price) {
itemsOrderedList.remove(item);
amount -= price;
amountLabel.setText("$"+(float)amount/100);
}
/**
* method to find what list an item belongs to
*/
void getItemLoc(String item, int price) {
for(int i=0; i<4; i++) {
if(item.equalsIgnoreCase(JUNK_FOODS[i])) {
removeOrderedItem(item, JUNK_FOODS_PRICE[i]);
}
else if(item.equalsIgnoreCase(DESSERTS[i])) {
removeOrderedItem(item, DESSERTS_PRICE[i]);
}
else if(item.equalsIgnoreCase(FRUIT[i])) {
removeOrderedItem(item, FRUIT_PRICE[i]);
}
else if(item.equalsIgnoreCase(BEVERAGE[i])) {
removeOrderedItem(item, BEVERAGE_PRICE[i]);
}
}
}
/**
* the main method
*/
public static void main(String[] argv) {
// Create a frame
FastFood frame = new FastFood();
frame.setSize(WIDTH, HEIGHT);
frame.setLocation(450, 400);
// add window closing listener
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
System.exit(0);
}
});
// Show the frame
frame.setVisible(true);
}
}
答案 0 :(得分:0)
当您向orderItemsList
添加字符串时,您可以添加商品加上价格
e.g。
Pizza $2.99
因此,当您单击deleteItem
并获取所选文本时,您将获得整个字符串和代码,如
if(item.equalsIgnoreCase(JUNK_FOODS[i])) {
失败。
老实说,您只需解析此String即可获得商品和价格,因此请更改为
void getItemLoc(String item, int price) {
removeOrderedItem (item, price);
}
void removeOrderedItem(String item, int price) {
itemsOrderedList.remove(item);
amount -= price;
amountLabel.setText("$"+(float)amount/100);
}
注意
我确信传入的price
不是价格,而是selected index
这可以通过首先删除冗余的price
参数并将代码更改为
void removeOrderedItem(String item) {
itemsOrderedList.remove(item);
String strprice = item.split(" ")[1];
strprice = strprice.replace("$", "");
int price = (int) (Float.parseFloat(strprice) * 100);
amount -= price;
amountLabel.setText("$"+(float)amount/100);
}