输入输出流:实验1

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.File;
import java.io.IOException;

class Fenxi{
	public static double getTotalScore(String s) {
		Scanner scanner = new Scanner(s);
		/*一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
		Scanner(s)产生从指定字符串扫描的值*/
		scanner.useDelimiter("[^0123456789.]+");
		//将此扫描仪的分隔模式设置为从指定的String构造的模式
		double totalScore = 0;
		while(scanner.hasNext()) {
			//扫描仪判断有没有下一个元素
			try {
				double score = scanner.nextDouble();
				/*将输入的下一个标记扫描为double。
				如果下一个令牌不能转换为有效的double。
				则抛出InputMismatchException异常*/
				totalScore += score;
			}
			catch(InputMismatchException exp) {
			//由Scanner抛出,表示检索到的令牌与预期类型的模式不匹配
			//或超出预期类型范围。
				String t = scanner.next();
				//返回扫描仪的下一个标记或令牌
			}
		}
		return totalScore;
	}
}

public class main_class {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		File socre = new File("C:\\Users\\asus\\Desktop\\score.txt");
		File socreA =
				new File("socreAnalysis.txt"); 
		try {
			Reader in = new FileReader(socre);
			Writer out = new FileWriter(socreA);
			BufferedReader bufreader = new BufferedReader(in);
			BufferedWriter bufwriter = new BufferedWriter(out);
			String buf = null;
			while((buf=bufreader.readLine())!=null) {
				buf+=" 总分:"+Fenxi.getTotalScore(buf);
				bufwriter.write(buf);
				bufwriter.newLine();
			}
			bufreader.close();
			bufwriter.close();
			in.close();
			out.close();
		}
		catch(IOException e) {
			System.out.println(e.toString());
		}
	}

}

posted on 2017-12-08 20:20  MACHINE_001  阅读(171)  评论(0编辑  收藏  举报

导航