Using 2D parallel arrays to store data
我应该让16位客人从这样的菜单中订购葡萄酒:
该计划必须是模块化的。 要下订单,必须向客人显示产品类型列表,然后根据该类型显示变体。 处理订单后,我必须显示最终报告:酒厂总量,大多数订购的葡萄酒产品类型,以及最多订购的葡萄酒产品/变体组合。
我不知道如何制作一个方法来搜索计数器数组中最有序的产品类型,然后是另一种方法,它将在计数器数组中搜索最有序的产品/变体组合。 这就是我需要帮助的地方。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import javax.swing.JOptionPane; public class Wine_Taste{ public static void main(String[] args){ String[]wines = {"Riesling","Chardonnay","Sauvignon Blanc","Merlot"}; String[][]wineTypes= {{"Dry- $4.50","Off Dry-$4.00","Sweet- $5.00",}, {"Apple- $6.00","Lemon-$5.50","Vanilla- $6.00"}, {"Lime-$4.50","Lemongrass- $6.50","Coconut- $7.00"}, {"Plum- $5.00","Black Cherry- $7.50","Chocolate- $6.00"}}; } double[][]prices= {{4.50, 4.00, 5.00}, {6.00, 5.50, 6.00}, {4.50, 6.50, 7.00}, {5.00, 7.50, 6.00}}; int[][]counter ={{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}; counter = go(wines,wineTypes,counter,prices); public static int[][] go(String[] wines, String[][] wineTypes, int[][] counter, double[][] prices){ go2(counter); double totalCost = 0; String user; int x =0; while (x<=16){ for(int i = 0;i<wines.length;i++){ JOptionPane.showMessageDialog(null,wines[i]); } user = JOptionPane.showInputDialog("choose wine 0-3"); int i = Integer.parseInt(user); for(int j=0;j<wineTypes[i].length;j++){ JOptionPane.showMessageDialog(wineTypes[i][j]); } user = JOptionPane.showInputDialog("choose option 0-3"); int j = Integer.parseInt(user); totalCost += prices[i][j]; counter[i][j]++; user = JOptionPane.showInputDialog("Order more? y/n"); if (user.equals("y")){ x++; else{ JOptionPane.showMessageDialog(totalCost); } } } return counter; } } } |
我不会那样设计这个程序。遵循一些基本的面向对象开发原则,您可以拥有葡萄酒类型,价格等的葡萄酒类,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
然后,您可以拥有一个订单类,用于保存订单特定数据,例如订购的葡萄酒,总价格等。
如果由于任何原因你想继续使用多个(不易管理)数组的方法,那么我猜你可以创建一个hashmap,其中键是葡萄酒名称,值是流行度。订购新酒时,您可以增加1。你可以在这里增加:
给定java hashmap中的键,如何更新值?
如果由于任何原因你不想或不能使用这种方法,那么你可以创建两个函数:getPopularProductVarCombo()用于每个wine最有序的类型,getMostPopular()用于最流行的函数。
要实现getMostPopular,您必须找到数组的最大值。这是一个很好的例子,说明如何做到这一点
在2d数组中打印最大数字 - 为什么我的代码打印三个数字
要实现getPopularProductVarCombo(),然后找到每行的最大值。您可能需要的任何其他信息都可以以类似的方式获取。