将字符串与字符串数组匹配

时间:2018-02-16 00:05:31

标签: java arrays list

提前抱怨文字墙。因此,对于我班级的作业,我必须编制快餐菜单,并且我在删除订购项目按钮时遇到问题。应该发生的是我从四个列表中选择一个项目而不是" 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);
}
}

1 个答案:

答案 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);
}