任务描述:
输入n(0<n<=20)个整数代表成绩,求n个成绩中最高的和第二高成绩
解决思路:
输入的数字 n 为 for 循环的次数,在每次循环中进行值的输入和判断
如果当前输入的分数大于最大值,则更新最大值和次大值
如果当前输入的分数大于次大值,但不大于最大值,则更新次大值
这里用,Integer.MIN_VALUE代表int类型变量所能表示的最小值
代码示例:
package a4_2024_06;
import java.util.Scanner;
public class j240630_1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入数据个数:");
int n = scanner.nextInt();
if(n<1 || n>20){
System.out.println("输入的数据个数不合法");
return;
}
int max1 = Integer.MIN_VALUE; // 最大值
int max2 = Integer.MIN_VALUE; // 次大值
System.out.println("输入"+n+"个整数:");
for(int i=0; i<n; i++){
int score = scanner.nextInt();
// 如果当前输入的分数大于最大值,则更新最大值和次大值
if(score > max1){
max2 = max1;
max1 = score;
}
// 如果当前输入的分数大于次大值,但不大于最大值,则更新次大值
else if(score > max2 && score < max1){
max2 = score;
}
}
System.out.println("最高成绩:"+max1);
System.out.println("第二高成绩:"+max2);
}
}