package stack;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Stack<String> stack = new Stack<String>();
while (true) {
String order = scanner.next();
if (order.equalsIgnoreCase("OUT")) {
break;
}
boolean isValidItem = isValidMenuItem(order);
if (isValidItem) {
stack.push(order);
} else {
System.out.println("Invalid item. Please choose from the menu.");
}
}
while (!stack.isEmpty()) {
int quantity = 0;
int totalCost = 0;
System.out.println(quantity + stack.pop() + totalCost);
}
System.out.println("END");
scanner.close();
}
private static boolean isValidMenuItem(String item) {
String[] menu = {"Cheeseburger $6", "pasta $6", "fries $3", "chicken $20", "soda $2"};
for (String menuItem : menu) {
if (menuItem.equalsIgnoreCase(item)) {
return true;
}
}
return false;
}
}
我如何检查堆栈列表以便可以增加数量。 如果输入:芝士汉堡、苏打水、鸡肉、芝士汉堡。芝士汉堡应该增加。
我认为您想使用堆栈来存储给定的项目顺序,但如果您使用以键为项目、以值作为项目计数的 linkedhashmap,则它会维护项目的顺序和计数。当您获取项目作为输入时,检查项目是否已存在于地图中。如果存在则增加其值,否则将其计数初始化为 1。
Map
if(mp.contains(item))
mp.put(item,mp.get(item)+1);
否则 mp.put(项目,1);
最后,您可以迭代地图并获取项目及其数量。