在Java中输入学生成绩通常涉及以下步骤:数据输入、数据存储、数据验证和结果输出。以下是一个综合示例,展示如何实现这些功能:
一、数据输入
使用`Scanner`类从键盘读取用户输入。例如,输入学生人数、学号、姓名及多门课程成绩。
```java
import java.util.Scanner;
public class StudentGradeInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入学生人数
System.out.print("请输入学生人数(不超过30):");
int numStudents = scanner.nextInt();
// 动态数组存储学生成绩
double[][] scores = new double[numStudents];
String[] names = new String[numStudents];
for (int i = 0; i < numStudents; i++) {
System.out.println("输入第" + (i+1) + "个学生的信息:");
System.out.print("学号:");
names[i] = scanner.next();
System.out.print("姓名:");
scores[i] = new double; // 假设每门课程成绩存储在数组中
for (int j = 0; j < 3; j++) {
System.out.print("课程" + (j+1) + "成绩:");
scores[i][j] = scanner.nextDouble();
}
}
scanner.close();
}
}
```
二、数据验证
确保输入的数据符合要求,例如成绩在0-100之间,学号不重复等。
```java
// 示例:验证成绩范围
for (int i = 0; i < numStudents; i++) {
for (int j = 0; j < 3; j++) {
if (scores[i][j] < 0 || scores[i][j] > 100) {
System.out.println("成绩输入错误:第" + (i+1) + "个学生第" + (j+1) + "门课程成绩必须在0-100之间");
return;
}
}
}
```
三、核心功能实现
遍历成绩数组,找到最高分并根据等级划分输出。
```java
double maxScore = scores;
String maxStudent = names;
for (int i = 1; i < numStudents; i++) {
if (scores[i] > maxScore) {
maxScore = scores[i];
maxStudent = names[i];
}
}
// 等级划分逻辑
String grade;
if (maxScore >= 90) grade = "A";
else if (maxScore >= 80) grade = "B";
else if (maxScore >= 70) grade = "C";
else grade = "D";
System.out.println("最高分学生:" + maxStudent + ",成绩:" + maxScore + ",等级:" + grade);
```
统计不及格人数及名单
遍历成绩数组,统计不及格(<60)的学生数量并输出名单。
```java
int failCount = 0;
System.out.println("不及格学生名单:");
for (int i = 0; i < numStudents; i++) {
if (scores[i] < 60) {
System.out.println(names[i] + "(成绩:" + scores[i] + ")");
failCount++;
}
}
System.out.println("不及格人数:" + failCount);
```
四、扩展功能(可选)
成绩排序: 将学生成绩按从高到低排序并输出; 总成绩计算
注意事项
建议对所有输入进行验证,避免程序因异常输入崩溃;
使用二维数组或对象数组存储学生成绩及对应信息;
注意变量命名、缩进等代码规范,提高可读性。
通过以上步骤,你可以实现一个简单的学生成绩输入系统,并根据需求扩展功能。