2

私のHW問題の一部に混乱しているようなものです。簡単そうに見えますが、指が上がれません。最大および最小の売上で営業担当者を返還しようとしています。私はそれを行う方法について混乱しています。助けていただければ幸いです。

import java.util.Scanner;
public class Cray {
    public static void main(String[] args){

        final int SALESPEOPLE = 5;
        int[] sales = new int[SALESPEOPLE];
        int sum, maxperson, minperson;
        int max = sales[0];
        int min = sales[0];



        Scanner scan = new Scanner(System.in);
        //Fill the 5 element array of sales with the user's input
        for (int i=0; i<sales.length; i++)
            {
            System.out.print("Enter sales for salesperson " + i + ": ");
            sales[i] = scan.nextInt();
            //Calculate the max and min sales
            //How do I return the salesperson i with the the max and min sales?
            if(sales[i] > max){
                max= sales[i];
            }
            if(sales[i] < min){
                min = sales [i];
            }


            }



        System.out.println("\nSalesperson   Sales");
        System.out.println("--------------------");
        sum = 0;
        for (int i=0; i<sales.length; i++)
            {
            System.out.println("     " + i + "         " + sales[i]);
            sum += sales[i];
            }

        System.out.println("\nTotal sales: " + sum);
        System.out.println("Average sales: " + sum/5);
        //WHere I want to print the max salesperson.
        System.out.println("Salesperson" +  );

          }

        }
4

4 に答える 4

2

int入力のスキャンを開始する前に、インデックスカウント宣言を保存して2つの変数を初期化できます。

   int maxindex=Integer.MIN_VALUE,minindex=Integer.MIN_VALUE;

次に、次のように配列インデックスをそれらに割り当てます。

   if(sales[i] > max){
       max= sales[i];
       maxindex = i;
   }
   if(sales[i] < min){
       min = sales [i];
       minindex = i;
   }

これで、最大および最小の販売で営業担当者を直接取得できます

  System.out.println("Max sales person "+sales[maxindex]);
  System.out.println("Min sales person "+sales[minindex]);

ここでは、配列インデックスを格納するという非常に単純なトリックを使用しました。これは非常に基本的なアプローチですが、より最適化されたアプローチがあるかもしれません。

于 2012-10-20T17:09:29.423 に答える
0

現在、forループでは、最大および最小の売上を保存しており、それらの売上を達成した営業担当者は保存していません。したがって、ではなく/に格納iする必要があります。maxminsales[i]

int max = 0, int min = 0

...

// in the for-loop
if(sales[i] > sales[max]){
    max = i;  // i.e. salesperson "i"
}
if(sales[i] < sales[min]){
    min = i;
}

...

System.out.println("Max salesperson: " +  max);
System.out.println("Min salesperson: " +  min);
于 2012-10-20T17:05:10.223 に答える
0

チェックを最大に調整できます

   if(sales[i] > max){
       max = sales[i];
       maxPerson = i;
   }
于 2012-10-20T17:05:37.073 に答える
0

さらに2つの変数を次のように定義します。

        int maxSalePersonIndex = 0;
        int minSalePersonIndex = 0;

次のように更新ifします。

        if(sales[i] > max){
            max= sales[i];
            maxSalePersonIndex  = i;
        }
        if(sales[i] < min){
            min = sales [i];
            minSalePersonIndex = i;
        }

最後に、との値を出力するだけmaxSalePersonIndexです minSalePersonIndex

    System.out.println("Salesperson index with max sale = " + maxSalePersonIndex);
    System.out.println("Salesperson index with min sale = " + minSalePersonIndex);
于 2012-10-20T17:11:01.880 に答える