输入、输出流

2、通过实验1,获得如下格式的成绩单score.txt,例如:

       姓名:张三,数学72分,物理67分,英语70分.

姓名:李四,数学92分,物理98分,英语88分.

姓名:周五,数学68分,物理80分,英语77分.

要求按行读取成绩单,并在该行的后面加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中

package com.an;

import java.io.*;

public class AnalysisResult {
   public static void main(String args[]) {
      File fRead = new File("score.txt");
      File fWrite = new File("socreAnalysis.txt");

            Writer out = new FileWriter(fWrite, true);//以尾加方式创建指向文件fWrite的out流
            BufferedWriter bufferWrite = new BufferedWriter(out);//创建指向out的bufferWrite流
            Reader in = new FileReader(fRead);//创建指向文件fRead的in流
            BufferedReader bufferRead = new BufferedReader(in);//创建指向in的bufferRead流


            String str = null;
            while((str=bufferRead.readLine())!=null) {
               double totalScore=Fenxi.getTotalScore(str);
               str = str+" 总分:"+totalScore;
               System.out.println(str);
               bufferWrite.write(str);
               bufferWrite.newLine();
            }
            bufferRead.close();
            bufferWrite.close(); 

   }
}
package com.an;

import java.util.*;
public class Fenxi {
   public static double getAverageScore(String s){   // 自定义方法getTotalScore
      Scanner scanner = new Scanner(s);
      scanner.useDelimiter("[^0123456789.]+"); // scanner调用useDelimiter(String regex)方法,向参数传递 “[^0123456789.]+”做分隔符
      double totalScore=0;
      while(scanner.hasNext()){
         try{
 double score = scanner.nextDouble();
              totalScore = totalScore+score;
         } 
         catch(InputMismatchException exp){
              String t = scanner.next();
         }
      }
      return totalScore;   
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值