将键盘输入的学生信息(包括学号 姓名和成绩)逐行写入文件Studentdat,当 输入exit时结束。 口统计文件Studentdat中包含的学生数,以及平均分、最高分和最低分。 程序检查成绩输入值,如果不是数值信息,或是负的数值信息,或超过成绩范围 (100),抛出相应的异常。在抛出异常之前应提供详细的信息说明,从而使使 用该程序的用户了解所出现的问题,同时考虑上述异常出现时程序应该如何处 理。 练习并掌握Eclipse编程环境下的断点设置、单步跟踪和变量检查等各种调试技
时间: 2024-03-02 12:50:05 浏览: 61
1_lower7y7_定义一个包含学生信息(学号_成绩)的顺序表和链表(二选一)_姓名_使其具有如下功能_
5星 · 资源好评率100%
好的,这是一个非常典型的Java文件操作和异常处理的问题。以下是一个简单的Java程序来实现你所描述的功能,你可以在Eclipse等编程环境中调试和运行它:
```
import java.io.*;
import java.util.*;
public class StudentInfo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
PrintWriter writer = null;
int count = 0;
float sum = 0.0f, maxScore = Float.MIN_VALUE, minScore = Float.MAX_VALUE;
try {
writer = new PrintWriter(new FileWriter("Studentdat"));
while (true) {
System.out.print("请输入学生信息(学号 姓名 成绩):");
String line = scanner.nextLine();
if (line.equals("exit")) {
break;
}
String[] fields = line.split(" ");
int id = Integer.parseInt(fields[0]);
String name = fields[1];
float score = Float.parseFloat(fields[2]);
if (score < 0 || score > 100) {
throw new IllegalArgumentException("成绩必须在0和100之间");
}
count++;
sum += score;
maxScore = Math.max(maxScore, score);
minScore = Math.min(minScore, score);
writer.println(id + " " + name + " " + score);
}
writer.close();
System.out.println("学生信息已写入文件Studentdat");
System.out.println("学生数:" + count);
System.out.println("平均分:" + (sum / count));
System.out.println("最高分:" + maxScore);
System.out.println("最低分:" + minScore);
} catch (NumberFormatException e) {
System.err.println("成绩格式错误:" + e.getMessage());
} catch (IllegalArgumentException e) {
System.err.println("成绩范围错误:" + e.getMessage());
} catch (IOException e) {
System.err.println("文件操作错误:" + e.getMessage());
} finally {
if (writer != null) {
writer.close();
}
}
}
}
```
这个程序使用了Scanner和PrintWriter两个类来分别从键盘读取输入和将输出写入文件。程序通过一个while循环来不断读取用户的输入,并将输入的学生信息逐行写入文件。
在循环内部,程序首先用split方法将一行输入按空格分割成三个字段,然后分别解析出学号、姓名和成绩。如果成绩不在0到100之间,程序将抛出一个IllegalArgumentException异常。如果成绩解析失败,程序将抛出一个NumberFormatException异常。在捕获这些异常时,程序将输出详细的错误信息。
在循环外部,程序会输出统计信息,包括学生数、平均分、最高分和最低分。程序使用一个计数器、一个累加器和三个变量来统计这些信息,并在循环内部进行更新。
在程序的最后,程序会关闭文件输出流。如果在文件写入过程中发生异常,程序也会关闭文件输出流。
阅读全文