首页 > 解决方案 > 如何显示二维数组中的最大数量?

问题描述

import java.util.Arrays;
import java.util.ArrayList;
import java.util.Random;

public class labb8 {
  public static void main(String[] args) {
    Random rnd = new Random();
    int[][] sales = new int[5][7];
    int[] total = new int[sales.length];
    ArrayList<String> unpopularSoftware = new ArrayList<String>();

    String[] locations = {"Houston", "Dallas", "Hunts", "San Ant", "Austin"};

    System.out.println("Location\t| Software Sales\t\t| Total Sales");
    System.out.println("--------------------------------------------------");

    for (int i = 0; i < sales.length; i++) {
      for (int j = 0; j < sales[i].length; j++) {
        sales[i][j] = rnd.nextInt(25);
        total[i] += sales[i][j];
      }
      System.out.print(locations[i] + "\t\t|");
      System.out.print(" " + Arrays.toString(sales[i]));
      System.out.println("\t| " + total[i]);
    }

    int unpopularModelCounter;
    for (int j = 0; j < sales[0].length; j++) {
      unpopularModelCounter = 0;
      for (int i = 0; i < sales.length; i++) {
        if (sales[i][j] != 0) {
          unpopularModelCounter++;
        }
      }
      if (unpopularModelCounter <= 3) {
        unpopularSoftware.add("Software " + (j + 1));
      }
    }
    System.out.println("Unpopular Software: " + unpopularSoftware);
    System.out.println("Location with most sold licenses: ");
  }
}

以上是代码,它给了我正在寻找的结果;但是,我想知道一些关于如何打印出拥有最多销售软件的位置的名称的方法?我尝试过的System.out.println(total[i]);只是System.out.println("\t| " + total[i]);显示所有总数,这就是我认为会发生的情况。我还尝试将System.out.println(total[i]);其他输出行放在底部的位置(这是我想要的位置),但代码找不到 [i],这让我相信我可能必须创建一些方法;因此,我再次要求就如何打印出就我的代码而言销售量最大的城市名称提供一些建议。

标签: javaarraysmultidimensional-array

解决方案


如果您希望城市名称的总数最高,您需要查看total数组中的最大总数,同时跟踪您迄今为止看到的最大总数和您看到的索引最大的总数。

像这样的东西应该可以很好地完成这项工作:

// Our initial guess is that `total[0]` is the maximum sales total.
int maxSales = total[0];
int maxI = 0;
for (int i = 1; i < total.length; ++i) {
    if (totals[i] > maxSales) {
        maxSales = total[i];
        maxI = i;
    }
}
System.out.println(locations[maxI] + " has the most sales: " + maxSales);

推荐阅读