实现从键盘上分布输入3个学生的5门课程成绩,存入数组,每输入一次,检查当前输入是否为有效输入,求学生的平均成绩并输出成绩最好的学生成绩。用java写出一个程序
时间: 2024-09-16 16:05:20 浏览: 43
在Java中,你可以创建一个学生类(Student),包含5门课程的成绩数组,并提供一个方法用于计算平均成绩。然后通过Scanner从键盘获取用户输入,验证输入的有效性。以下是简单的程序实现:
```java
import java.util.Scanner;
class Student {
private double[] scores = new double[5];
// ... 其他学生属性
public void setScore(int index, double score) {
if (index >= 0 && index < 5) {
scores[index] = score;
} else {
System.out.println("无效的索引");
}
}
public double getAverageScore() {
double sum = 0;
for (double score : scores) {
if (!Double.isNaN(score)) {
sum += score;
}
}
return sum / scores.length;
}
@Override
public String toString() {
// 返回学生姓名和成绩信息
StringBuilder sb = new StringBuilder();
for (int i = 0; i < scores.length; i++) {
sb.append("课程 ").append(i + 1).append(": ").append(scores[i]).append("\n");
}
return "学生信息: 平均成绩: " + getAverageScore() + ", 最高分: " + findMaxScore();
}
private double findMaxScore() {
double max = Double.MIN_VALUE;
for (double score : scores) {
if (score > max) {
max = score;
}
}
return max;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int studentIndex = 1; // 学生编号
while (true) {
System.out.println("请输入学生" + studentIndex + "的五门课程成绩(按顺序输入,输入q退出):");
for (int i = 0; i < 5; i++) {
double score = scanner.nextDouble();
if (score.equals(Double.parseDouble("q"))) break;
((Student) students[studentIndex - 1]).setScore(i, score);
}
System.out.println("学生" + studentIndex + "的平均成绩为: " + students[studentIndex - 1].getAverageScore());
System.out.println("学生" + studentIndex + "的成绩最高的课程为: " + students[studentIndex - 1]);
studentIndex++;
if (studentIndex > 3) { // 假设最多有3个学生
break;
}
}
scanner.close();
}
private static Student[] students = new Student[3]; // 初始化三个学生对象
}
```
在这个程序中,我们首先创建了一个`Student`类,包含了设置成绩、计算平均成绩和找到最高分的方法。在`main`函数中,使用循环获取每个学生的成绩,存储到`students`数组中,并实时计算和输出结果。
阅读全文