Java 返回错误数字的数组的最大值和最小值

Java max and min of array returning wrong numbers

我在计算数组的最大值和最小值时遇到问题。我正在寻找最大和最小索引而不是它们包含的值。我的打印输出最大为 7,最小为 1,但这是不正确的。最大值应为 1,最小值应为 6。我尝试在自己的 for 循环中制作 if 语句,但得到了相同的结果,我查看了其他代码,但似乎仍然无法确定我的错误所在。如有任何帮助,我们将不胜感激!

public static void displaySales (double[] data)
{
    double total = 0;
    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;

    for (int i = 0; i < data.length; i ++)
    {
        System.out.println("Week "+(i+1)+" total sales:"+data[i]);
        System.out.printf("Average daily sales week "+(i+1)+": %.2f\n\n", data[i]/7);
        total += data[i];

        if (max < data[i])
            max = i;
        if (min > data[i])
            min = i;

    }
    double avgWeeklySales = total/data.length;

    System.out.printf ("Total sales: %.2f\n", total);
    System.out.printf ("Average weekly sales: %.2f\n", avgWeeklySales);
    System.out.println ("Week with highest sales: "+ (max+1));
    System.out.println ("Week with lowest sales: "+ (min+1));
}

}

我想你是想输入 data[i] 的值而不是 i

    if (max < data[i])
        max = data[i];
    if (min > data[i])
        min = data[i];

您正在寻找 data 数组中具有最小值和最大值的索引。这意味着您应该跟踪 min/max 索引和 min/max 值。

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
int minIndex = 0;
int maxIndex = 0;

for (int i = 0; i < data.length; i ++) {
    System.out.println("Week "+(i+1)+" total sales:"+data[i]);
    System.out.printf("Average daily sales week "+(i+1)+": %.2f\n\n", data[i]/7);
    total += data[i];

    if (max < data[i]) {
        maxIndex = i;
        max = data[i];
    }
    if (min > data[i]) {
        minIndex = i;
        min = data[i];
    }
}

最后你应该打印 minIndex+1maxIndex+1.

首先,您需要用实际值(而不是索引)更新最大值和最小值,然后将索引存储在不同的变量中。还有,比较要反过来

if (max > data[i]) {
    max = data[i];
    maxIndex = i;
}
if (min < data[i]) {
    min = data[i];
    minIndex = i;
}

最后打印索引值。 (也不要忘记声明它们)

试试这个。

import java.util.Scanner;

public class MinMaxTest {
    static void minMax(int[] arr){
        int sum=0,min=0,max=0,ch=0;
        int[] temp = new int[arr.length];
        for(int i=0;i<arr.length;i++){
            sum=sum+arr[i];
        }
        //temp=sum-arr[0];
        for(int i=0;i<arr.length;i++){
            temp[i]=sum-arr[i];
        }
        //sort the array, 0 is minimum element index and array length - 1 index is maximum element index
        for(int i=0;i<temp.length;i++){
            for(int j=0;j<temp.length-1-i;j++){
                if(temp[j]>temp[j+1]){
                    ch=temp[j];
                    temp[j] = temp[j+1];
                    temp[j+1] = ch;
                }
            }
        }
        /*for(int i: temp){
            System.out.println(i);
        }*/

        System.out.println(temp[0]+" "+temp[arr.length-1]);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
                System.out.println("fd:" + 3/6);
                Scanner scn = new Scanner(System.in);
                System.out.println("enter the size of array");
                int n = scn.nextInt();
                int[] arr = new int[n];
                for(int i=0;i<n;i++){
                    arr[i] = scn.nextInt();
                }
                minMax(arr);
                scn.close();

    }

}