1、/*DuLinRain*/*使用字符流编程实现以下功能*从键盘输入姓名、学号、成绩,并保存到文本文件中,重复进 行,直到输入空字符串为止*从文件中读取各学生的成绩,并计算所有学生成绩的平均值、最大值、最小值和总分。*/import java.io.*;public class TestStudentpublic static void main(String args) throws IOException BufferedReader buf = new BufferedReader(new InputStreamReader(System.in);BufferedWriter buff =
2、 new BufferedWriter(new FileWriter(“D:/学生信息系统.txt“);BufferedReader buf1 = new BufferedReader(new FileReader(“D:/学生信息系统.txt“);FileReader fr=new FileReader(“D:/学生信息系统.txt“);System.out.println(“=“);System.out.println(“ 学生信息系统 “);System.out.println(“=“);System.out.println(“=“);System.out.println(“ 请输入姓名
3、、学号和成绩:“);System.out.println(“=“);System.out.println();String str = buf.readLine();/读取一行while (!str.equals(“) buff.write(str);/将 str 写入到缓冲区buff.newLine();/写入换行符buff.flush();/将缓冲区内的数据写入到文件str = buf.readLine();System.out.println(“=“);buf.close();/关闭buff.close();/关闭System.out.println(“ 学生信息已从键盘写入文件 !“)
4、;System.out.println(“=“);/创建可容纳 128 个字符的数组char data=new char128;/将数据读入字符串行数组中int num=fr.read(data);/将字符串行转化成字符串String str2=new String(data,0,num);System.out.println(“=“);System.out.println(“ 文件中的学生信息:“);System.out.println(“=“);System.out.println();System.out.println(str2);fr.close();/关闭System.out.pr
5、intln(“=“);System.out.println(“学生信息已从文件读出到窗体 !“);System.out.println(“=“);System.out.println();/创建可容纳 100 个字符串的数组Strings=new String100;/创建可容纳 100 个双精度行的数组Doublescore=new Double100;/异常处理程序 try/将字符串分行读入for(int i=0;si!=“;i+)si=buf1.readLine();int num1=si.length();/截取最后三位字符串即为分数,以满分一百位最大限si=si.substring(
6、num1-3,num1);/将字符串转换成 Double 型存入 score 数组scorei=Double.parseDouble(si);/打印每位学生的成绩System.out.println(“ 第“+(i+1)+“个学生的成绩:“+scorei);/捕获 NullPointerException 异常catch(NullPointerException e)int k=0;/计数标志位Double max=score0;/最高分Double min=score0;/最低分Double total=0.0;/总分Double average=0.0;/平均分System.out.pri
7、ntln();System.out.println(“=“);System.out.println(“ 处理结果“);System.out.println(“=“);System.out.println();/计算程序for(int j=0;scorej!=null;j+)if(scorejmax)max=scorej;if(scorejmin)min=scorej;total=total+scorej;k=j+1;average=total/k;System.out.println(“ 最高分为:“+max);System.out.println(“ 最低分为:“+min);System.out.println(“ 平均分为:“+average);System.out.println(“ 总分为:“+total);System.out.println();System.out.println(“=“);System.out.println(“ 工作已经完成!“);System.out.println(“=“);