我试图找到数组中最大的三个元素。到目前为止,我已经想出了这个,但它不能正常工作(输出是 9 8 3):
public class Test {
public static void main(String[] args) {
int max1, max2, max3;
int[] test= {2,4,8,3,9,1};
max1= test[0];
max2= test[0];
max3= test[0];
for(int i = 1; i < test.length; i++) {
if(max1 < test[i]) {
max2= max1;
max1= test[i];
}
else if (max2 < test[i]) {
max3= max2;
max2= test[i];
}
else if (max3 < test[i]) {
max3= test[i];
}
}
System.out.println(max1 + " " + max2 + " " + max3);
}
}
我已经设法完成最大的 2 个整数,但无法完成 3 个。如何仅使用数组的 1 次迭代来编写代码?
在第一个“if”语句中不包括:
max3 = max2
我会使用
stream
来完成这项工作:
int[] test= {2,4,8,3,9,1};
String maxValues = Arrays.stream(test).boxed()
.sorted(Comparator.reverseOrder())
.limit(3)
.map(String::valueOf)
.collect(Collectors.joining(" "));
System.out.println(maxValues);
输出
9 8 4
Arrays.sort(test);
max1 = test[test.length - 1];
max2 = test[test.length - 2];
max3 = test[test.length - 3];
System.out.println(max1 + " " + max2 + " " + max3);
private static int findThirdLargest(List<Integer> intList) {
int max =0;
int secondMax =0;
int thirdMax = 0;
for(Integer i: intList){
if(i>max){
thirdMax = secondMax;
secondMax = max;
max = i;
}
else if(i>secondMax){
thirdMax = secondMax;
secondMax = i;
}
else if(i>thirdMax){
thirdMax = i;
}
}
System.out.println(max);
System.out.println(secondMax);
System.out.println(thirdMax);
return thirdMax;
}