【发布时间】:2021-03-27 11:54:36
【问题描述】:
我正在尝试使用 Arraylists 而不仅仅是数组来重写旧程序。该程序是 2017 年电子游戏销量前 5 名的数据库,该程序执行的方法之一是查找每个位置的最大值(总共 4 个位置:北美、欧盟、日本和其他销售额)。
(注意:总共有 5 列销售额(NA、EU、JP、Other Sales、Global Sales),我只希望该方法在前四列中找到最大值。)
这些是二维数组的sn-ps及其对应的求最大值方法:
double[][] Sales ={ {41.49,29.02,3.77,8.46,82.74},{29.08,3.58,6.81,0.77,40.24},
{15.85,12.88,3.79,3.31,35.83},{15.75,11.01,3.28,2.96,33},
{11.27,8.89,10.22,1,31.38} };
// maximum value
public static void hiSales(double[][] sales) {
double max1;
double[] max = new double[sales.length];
for(int j=0; j<sales[0].length-1;j++) { //WILL WORK AS LONG AS IT IS SQUARE MATRIX
for (int i = 0; i < sales.length; i++) {
max1 = sales[0][j];
if (sales[i][j] > max1) {
max1 = sales[i][j];
}
if (i == sales.length - 1) {
max[j] = max1;
}
}
}
System.out.println("\n | HIGHEST SALES PER LOCATION |");
System.out.println("\n | NA Sales | | EU Sales | | JP Sales | "
+ "| Other Sales | \n");
System.out.println("— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —\n");
System.out.print(" ");
for(int i=0; i<max.length-1; i++) {
System.out.print(max[i] + "\t");
System.out.print(" ");
}
System.out.println("\n");
System.out.println("— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —");
}
现在,我已经将 2D 数组转换为 2D Arraylist,并且该方法不再起作用,这是我想解决的问题。
这是我转换的新 2D Arraylist:
ArrayList<VGSdata> sales = new ArrayList<>();
VGSdata wii = new VGSdata(41.49,29.02,3.77,8.46,82.74);
VGSdata bros = new VGSdata(29.08,3.58,6.81,0.77,40.24);
VGSdata kart = new VGSdata(15.85,12.88,3.79,3.31,35.83);
VGSdata res = new VGSdata(15.75,11.01,3.28,2.96,33);
VGSdata prb = new VGSdata(11.27,8.89,10.22,1,31.38);
sales.add(wii);
sales.add(bros);
sales.add(kart);
sales.add(res);
sales.add(prb);
那么.. 该方法将如何被重写,以便它利用ArrayList 中的数据同时仍执行相同的功能?
【问题讨论】:
-
怎么不行?您需要做的就是将
array[index]更改为yourArrayList.get(index),如果您从嵌入式数组中获取,则为yourArrayList.get(index).get(otherIndex) -
你已经创建了一个 1D ArrayList,而不是一个 2D 的。 '2D' ArrayList 的类型是
ArrayList<ArrayList<Double>>? -
@RIVERMAN2010 确实,我认为这只是我必须做的,但是当我做
array.get(i).get(j)时,.get(j)显示一个错误说“找不到符号”,它认为它是然后我必须创建一个方法。有什么解释为什么会这样吗? -
@HenryTwist 请原谅我,我不太明白你的意思。我尝试将其重新输入为您所写的内容,但随后显示了一堆错误。我认为它已经很好了,因为我创建了一个方法来简单地显示数组列表并且它工作得很好。
-
@HenryTwist 谢谢你的建议,先生。说实话,我只是编程世界的初学者,目前我只是在学习 ArrayLists。话虽如此,我希望你能原谅我,因为我几乎不明白我如何能够应用你的建议。