[我知道我可以使用其他策略(例如,对数组进行排序,然后仅返回[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)
方法无效?
[您的两个功能都不正确,因为您正在比较integers[i]
与i
。您需要比较min
或max
。对于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;
}
对于min(...)
和max(...)
,您都将integers[i]
子句中的i
与if
进行了比较。您最有可能打算分别将它们与min
和max
进行比较。
index