所以我正在创建一个java程序,它接收客户购买的内容,并使用数组和哈希映射来计算出CSE作业的成本(用它打印其他东西也很麻烦)。但现在我希望用户能够首先输入产品,然后输入数量,以便能够制作简单,用户友好的“现金登记”程序。基本上只是想system.out的任何想法如何做到这一点?
不确定具有多个scan / system.in代码行的循环是否有效,我真的不确定如何解决这个问题。
哦,如果有类似问题,请告诉我!我找不到类似的东西,但我可能错了。
import java.util.HashMap;
import java.util.ArrayList;
public class preLab3 {
// PreLab Q1: Compute the price of buying a specific quantity of a single item
public static double getPriceSingleItemType(HashMap<String, Double> priceList, String itemType, int quantity) {
double itemPrice = priceList.get(itemType);
return itemPrice * quantity;
}
// PreLab Q2: Compute the price of a single order
public static double getPrice(HashMap<String, Double> priceList, ArrayList<String> basket) {
double totalCost = 0.0;
for(String item: basket) {
double itemPrice = priceList.get(item);
totalCost = totalCost + itemPrice;
}
return totalCost;
}
public static HashMap<String, Double> getPriceList() {
HashMap<String, Double> priceList = new HashMap<String, Double>();
priceList.put("eggs", 1.79); // per dozen
priceList.put("butter", 3.19);
priceList.put("cheese", 5.99);
priceList.put("apple", 0.99); // per pound
priceList.put("banana", 0.39); // per pound
priceList.put("strawberries", 1.99);
priceList.put("peppers", 0.99);
priceList.put("tomato sauce", 0.5);
priceList.put("chocolate chips", 2.29);
return priceList;
}
public static void main(String[] args) {
System.out.println(getPriceList());
// PreLab Q3: I want to buy 3 lbs of strawberries
double price = getPriceSingleItemType(getPriceList(), "strawberries", 3);
System.out.println(price);
ArrayList<String> cart = new ArrayList<>();
cart.add("strawberries");
cart.add("strawberries");
cart.add("strawberries");
cart.add("chocolate chips");
cart.add("banana");
cart.add("banana");
cart.add("apple");
cart.add("eggs");
cart.add("butter");
double totalCost = getPrice(getPriceList(), cart);
System.out.println("The customer must pay: " + totalCost + " USD");
ArrayList<HashMap<String, Integer>> orders = new ArrayList<>();
for(HashMap<String, Integer> maps : orders) {
}
}
}
答案 0 :(得分:0)
首先,你应该考虑查看这篇文章,了解静态方法的未来/当前参考。 https://stackoverflow.com/a/7084473/1770303
在这种情况下,您应该将您的hashmap作为对象引用,方法是在类中全局声明它,并在方法中添加键值对或创建一个基本相同的单独类。如何组织代码在很大程度上取决于个人。最后,应根据键值检查每个用户输入,以便在继续之前查看其是否为有效键。如果用户输入未包含在地图中,那么要求是什么?你将如何处理?
至于扫描仪,我会参考以下帖子,它提供扫描仪类文档的链接。 https://stackoverflow.com/a/14679497/1770303
答案 1 :(得分:0)
首先为用户输入创建一个Scanner
对象,然后使用您已经获得的示例代码cart.add(item)
添加用户输入item
,并循环每个项目以进行用户输入{ {1}}。所以完全是这样的:
quantity
示例运行:
// ... same code above
ArrayList<String> cart = new ArrayList<>();
Scanner input = new Scanner(System.in);
String user_item = "";
int user_quantity = 0;
System.out.println("What items would you like to buy?");
// Loop to repeatedly get user input and add items to cart
// until user enters "q" for item to quit.
do {
System.out.print("Item? (q to quit) ");
user_item = input.nextLine();
if (user_item.equals("q")){
break;
}
System.out.print("How many " + user_item + "? ");
user_quantity = input.nextInt();
System.out.println(user_quantity + " " + user_item);
for(int q = 0; q <= user_quantity; q++){
cart.add(user_item);
}
} while(!input.nextLine().equals("q"));
input.close();
// Remove these
// cart.add("strawberries");
// cart.add("strawberries");
// cart.add("strawberries");
// cart.add("chocolate chips");
// cart.add("banana");
// cart.add("banana");
// cart.add("apple");
// cart.add("eggs");
// cart.add("butter");
double totalCost = getPrice(getPriceList(), cart);
// ... same code below
当然,您可能还想为无效的用户输入添加错误/异常处理。
希望这有帮助。