Java编写程序找出两个分数最高的学生,提示输入学生的个数、每个学生的名字及其分数,最后显示获得最高分的学生和第二高分的学生
时间: 2024-10-01 21:10:16 浏览: 82
在Java中,你可以通过创建一个`Student`类来存储学生的信息,包括名字和分数。然后利用数组或列表来存储所有学生,并遍历这个集合来找到分数最高的前两名学生。以下是简单的步骤和示例代码:
首先,定义一个`Student`类:
```java
public class Student {
String name;
int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
// 为了方便比较,可以提供getter和setter方法
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getScore() { return score; }
public void setScore(int score) { this.score = score; }
}
```
接下来,创建一个方法来找出最高分和第二高的学生:
```java
import java.util.*;
public class Main {
public static void findTopStudents(int numStudents, Student[] students) {
if (numStudents <= 0 || students == null) {
System.out.println("无效的输入");
return;
}
Arrays.sort(students, (s1, s2) -> s2.getScore() - s1.getScore()); // 升序排序
Student topStudent = students[students.length - 1];
Student secondTopStudent = null;
if (numStudents > 1) {
secondTopStudent = students[students.length - 2]; // 如果有两名及以上学生,取第二名
} else {
// 如果只有一个人,直接返回,假设它是唯一的最高分学生
secondTopStudent = topStudent;
}
System.out.printf("最高分学生:%s, 分数:%d%n", topStudent.getName(), topStudent.getScore());
System.out.printf("第二高分学生:%s, 分数:%d%n", secondTopStudent.getName(), secondTopStudent.getScore());
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入学生人数:");
int numStudents = scanner.nextInt();
Student[] students = new Student[numStudents];
for (int i = 0; i < numStudents; i++) {
System.out.println("请输入第" + (i+1) + "位学生的名字及分数,格式如:张三 95");
String[] input = scanner.nextLine().split(" ");
students[i] = new Student(input[0], Integer.parseInt(input[1]));
}
findTopStudents(numStudents, students);
scanner.close();
}
}
```
在这个程序中,用户会先输入学生的人数,然后逐个输入每个学生的名字和分数。主函数`findTopStudents`会对学生列表进行排序,然后取出最高分和第二高分的学生并输出。
阅读全文