Java min()方法未返回数组中的最小值[关闭]

问题描述 投票:0回答:2

[我知道我可以使用其他策略(例如,对数组进行排序,然后仅返回[0]处的数组索引),但是我正在练习其他技术以在数组中查找最小值。

import java.util.Arrays;

public class ArrayUtils {

    static int[] integers = new int[] {1, 3, 2, 10, 15, 30};

    public static int max(int[] integers) {
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < integers.length; i++) {
            if (integers[i] > i)
                max = integers[i];
        }
        return max;
    }

    public static int min(int[] integers) {
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < integers.length; i++) {
            if (integers[i] < i) {
                min = integers[i];
            }
        }
        return min;
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(integers));
        System.out.println("Max value: " + max(integers));
        System.out.println("Min value: " + min(integers));
    }
}

输出:

[1, 3, 2, 10, 15, 30]
Max value: 30
Min value: 2147483647

为什么我的逻辑对max(int[] integers)方法有效,但对我的min(int[] integers)方法无效?

java arrays
2个回答
0
投票

[您的两个功能都不正确,因为您正在比较integers[i]i。您需要比较minmax。对于min(),请尝试以下操作:

public static int min(int[] integers) {
    int min = Integer.MAX_VALUE;
    for (int i = 0; i < integers.length; i++) {
        if (integers[i] < min) {  // <-- change here
            min = integers[i];
        }
    }
    return min;
}

0
投票

对于min(...)max(...),您都将integers[i]子句中的iif进行了比较。您最有可能打算分别将它们与minmax进行比较。


0
投票
您正在将数组中的值与其

index

© www.soinside.com 2019 - 2024. All rights reserved.