java基础:用Java的io包导出txt文件中的数据,并计算平均成绩,最后将平均成绩写回到txt文件末尾
txt文件如下:
张三;59
李四;60
王五;90
赵倩;70
具体代码如下:
package com.sirc.javatrain.lession1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class StatisticsGrade {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//调用老师写的方法
teach();
//调用自己写的方法
//my();
}
/*
* 自己写的代码(存储用类对象)
*/
public static void my()
{
String fileName="F:/Java/lession1/demo/student.txt";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(fileName));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//实例化学生对象
List<Student> student=new ArrayList<Student>();
try {
String r;
r = br.readLine(); //读取第一行
Student stu=new Student();
String[] line=new String[2];
while(r!=null){
line = r.split(";");
stu.setName(line[0]);
stu.setGrade(line[1]);
student.add(stu);
r=br.readLine();//读取下一行
}
int gradeSum=0;
for (Student student2 : student) {
if(student2!=null)
gradeSum+=Integer.parseInt(student2.getGrade());
}
int count=student.size();
double avg=gradeSum/count;
System.out.println("总成绩" + gradeSum);
System.out.println("平均值:" + avg);
BufferedWriter writer=new BufferedWriter(new FileWriter(fileName,true));
writer.newLine();
writer.write("平均成绩;"+String.valueOf(avg));
if(writer!=null){
writer.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 老师写的代码
*/
public static void teach() throws IOException{
String fileName="F:/Java/lession1/demo/student.txt";
//通过路径读取文件
BufferedReader reader=new BufferedReader(new FileReader(fileName));
//定义行数
String content=null;
int count=0;
int chengji=0; //平均成绩
int chengjiAll=0; //总成绩
content=reader.readLine(); //读取txt文件第一行
//循环读取txt文件每一行,并解析打印出来
while (content!=null) {
String[] tmpArray=content.split(";");
chengji=Integer.parseInt(tmpArray[1]);
System.out.println(tmpArray[0]+":"+tmpArray[1]);
chengjiAll+=chengji;
count++;
content=reader.readLine();
}
double avg=chengjiAll/count;
System.out.println(chengjiAll);
System.out.println("平均成绩:"+avg);
//关闭读出流
if(reader!=null)
{
reader.close();
}
//定义写入流,写入到文件的末尾
BufferedWriter writer=new BufferedWriter(new FileWriter(fileName,true));
//换行
writer.newLine();
writer.write("平均成绩;"+String.valueOf(avg));
//关闭写入流
if(writer!=null){
writer.close();
}
}
}
学生对象类:
package com.sirc.javatrain.lession1;
public class Student {
/**
* @param args
*/
private String name;
private String grade;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getGrade() {
return grade;
}
}