Как я могу отобразить наибольшее количество в моем 2D массиве? - PullRequest
1 голос
/ 10 апреля 2020
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], что заставило меня поверить, что мне, возможно, придется создать некоторые методы ; поэтому, опять же, я прошу несколько советов о том, как распечатать название города с наибольшей суммой, проданной с точки зрения моего кода.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Если вы хотите, чтобы название города имело наибольшую сумму, вам нужно просмотреть массив 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);
1 голос
/ 10 апреля 2020

Возможно, попробуйте добавить это в конец кода.

    int max = 0; // stores the maximum value
    for (int i = 0; i < total.length; i++) {
        max = Math.max(max, total[i]);
    }
    System.out.println(max);

Это должно вывести наибольшее значение из всего массива. Мне нравится твой код!

...