数组的Java max和min返回错误的数字

时间:2018-03-07 18:55:18

标签: java arrays max min

我在计算数组的最大值和最小值时遇到问题。我正在寻找最大和最小指数,而不是它们包含的值。我打印出来的最大值为7,最小值为1,但这是不正确的。最大值应为1,最小值应为6.我尝试在自己的循环中制作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));
}

}

4 个答案:

答案 0 :(得分:1)

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

#name="ngModel"

最后,您应该打印#password="ngModel" <div class="form-group"> <input type="password" class="form-control" id="pwd" placeholder="password" [(ngModel)]="password" name="password" #password="ngModel" maxlength="10" minlength="5" required> </div> <div [hidden]="password.valid || !(password.dirty || password.touched)"> <div class="text-danger">Please enter Password</div> </div>

答案 1 :(得分:0)

我认为您的意思是设置data[i]而不是i的值。

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

答案 2 :(得分:0)

首先,您需要使用实际值(而不是索引)更新max和min值,然后将索引存储在另一个变量中。此外,比较应该颠倒

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

最后打印索引值。 (也不要忘记宣布他们)

答案 3 :(得分:-1)

试试这个。

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();

    }

}