实验七--成绩分析

目录

一、知识点

1、文件读取

2、字符串解析

3、注意事项

4、java各类输入输出流一览

三、代码


一、知识点

1、文件读取

(1)利用file读取电脑中的文件,此为基础,既可作为输入流的底层,也可作为输出流的底层,例如(在此例中,第一个参数为文件位置,第二个参数为文件名称,如想在自己的编译器中运行,请新建txt文件,并修改文件路径

File f1 = new File("D:\\Users\\ASUS\\Desktop", "score.txt");
File f2 = new File("D:\\Users\\ASUS\\Desktop", "scoreAnalysis.txt");

(2)字符流,filewriter和filereader,基于file的流,该流可作为缓冲流的底层,可以读取和写入,但没有按行读取和写入

(3)bufferedwriter和bufferedreader,可以按行读取写入,结合scanner的字符串解析,非常方便

例如(此例基于上面的例子)

BufferedWriter w = new BufferedWriter(new FileWriter(f2));
BufferedReader r = new BufferedReader(new FileReader(f1));

(4)按行读取写入,在缓冲流中,可以用readline进行按行读取,write之后加一个newline可以达到换行的结果,而想要一行一行读取文件所有内容,例如(此例无法运行,仅作为参考)

String listener;
while((listener=r.readLine())!=null)

2、字符串解析

(1)我们有时候只需要从字符串中提取我们需要的内容,此时scanner传入的参数为string类型

(2)如果需要int类型,则用hasnextInt,以此类推,但仅仅用此两类会发生错误,因为无法读取的时候会抛出异常,需要加上try-catch语句,举例

Scanner input = new Scanner(listener_new);
while(input.hasNext()){
   try{
        sum = sum + input.nextInt();
      }
   catch(InputMismatchException e){
        input.next();
      }

3、注意事项

(1)文件读取一定要使用try-catch语句

(2)流使用后要及时关闭

(3)流的使用也要try-catch语句

4、java各类输入输出流一览

https://blog.csdn.net/qq_35760825/article/details/124577378

三、代码

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;
class Fenxi{
    private int sum = 0;
    private File f1;
    private File f2;
    public Fenxi(File f1,File f2){
        this.f1 = f1;
        this.f2 = f2;
    }
    public void tongji(){
        try{
            BufferedWriter w = new BufferedWriter(new FileWriter(f2));
            BufferedReader r = new BufferedReader(new FileReader(f1));
            String listener;
            while((listener=r.readLine())!=null){
                String listener_new = listener.replaceAll(",", " ");
                Scanner input = new Scanner(listener_new);
                while(input.hasNext()){
                try{
                    sum = sum + input.nextInt();
                }
                catch(InputMismatchException e){
                    input.next();
                }
            }
            input.close();
            w.write(listener+" zongFen:"+(float)sum);
            w.newLine();
                sum = 0;
            }
            w.close();
            r.close();
        }
        catch(IOException e){       
        }
    }
}
public class AnalysisResult {
    public static void main(String[] args) {
        try{
            File f1 = new File("D:\\Users\\ASUS\\Desktop", "score.txt");
            File f2 = new File("D:\\Users\\ASUS\\Desktop", "scoreAnalysis.txt");
            Fenxi x = new Fenxi(f1, f2);
            x.tongji();
        }
        catch(Exception e){
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值