gpt4 book ai didi

java - 使用二维并行数组存储数据

转载 作者:行者123 更新时间:2023-11-30 10:52:52 24 4
gpt4 key购买 nike

我应该让最多 16 位客人从这样的菜单中点酒:

enter image description here该程序必须是模块化的。要下订单,必须向客人显示产品类型列表,然后显示基于该类型的变体。处理完订单后,我必须出示一份最终报告:酒厂的总产量、订购最多的 Wine 产品类型以及订购次数最多的 Wine 产品/变体组合。

我不确定如何创建一种方法来搜索计数器数组以查找订购最多的产品类型,然后另一种方法将在计数器数组中搜索订购次数最多的产品/变体组合。这就是我需要帮助的地方。

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;
}
}
}

最佳答案

我不会那样设计程序。遵循一些基本的面向对象开发原则,您可以拥有一个包含 Wine 类型、价格等的 Wine 类,例如:

public class Wine {

String name;
String type;
double price;

public Wine(String name, String type, double price) {
super();
this.name = name;
this.type = type;
this.price = price;
}

//+getters setters

}

然后你可以有一个订单类来保存订单的特定数据,比如订购了哪种酒,总价等。

如果出于任何原因您想继续使用多个(不易管理)数组的方法,那么我想您可以创建一个 HashMap ,其中键是酒名,值是受欢迎程度。您可以在订购新酒时加一。您可以在此处递增:

How to update a value, given a key in a java hashmap?

如果出于任何原因您不想或不能使用这种方法,那么您可以创建两个函数:getPopularProductVarCombo() 用于每种 Wine 中订购最多的类型,以及 getMostPopular() 用于最流行的类型。

要实现 getMostPopular,您必须找到数组的最大值。这是一个很好的例子,说明如何做到这一点

Print largest number in a 2d array - why do my code print three numbers

要实现 getPopularProductVarCombo(),然后找到每行的最大值。您可能需要的任何其他附加信息都可以通过类似的方式获取。

关于java - 使用二维并行数组存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com