【实验目的】
掌握字符输入、输出流用法;掌握使用Scanner类解析文件。
【实验要求】
1、创建如下格式的成绩单(文本格式)score.txt:
姓名:张三,数学72分,物理67分,英语70分.
姓名:李四,数学92分,物理98分,英语88分.
姓名:周五,数学68分,物理80分,英语77分.
要求:通过键盘输入3个学生的姓名及数学、物理、英语的成绩,每个学生的内容占一行,将数据保存在score.txt文件中。
2、通过实验1,获得如下格式的成绩单score.txt,例如:
姓名:张三,数学72分,物理67分,英语70分.
姓名:李四,数学92分,物理98分,英语88分.
姓名:周五,数学68分,物理80分,英语77分.
要求按行读取成绩单,并在该行的后面加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。
package com.student;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class Demo07 {
public static void main(String[] args) throws IOException {
TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num1 = s2.getSum() - s1.getSum();
int num2 = (num1 == 0) ? s2.getwuli() - s1.getwuli() : num1;
int num3 = (num2 == 0) ? s2.getMath() - s1.getMath() : num2;
int num4 = (num3 == 0) ? s2.getEnglish() - s1.getEnglish() : num3;
int num5 = (num4 == 0) ? s2.getName().compareTo(s1.getName()) : num4;
return (num5< 0) ? -1 : ((num5 == 0) ? 0 : 1);
}
});
for (int i = 1; i <= 3; i++) {
Scanner input = new Scanner(System.in);
System.out.println("请输入第" + i + "个学生的信息:");
System.out.print("姓名:");
String n = input.next();
System.out.print("数学:");
int c = input.nextInt();
System.out.print("物理:");
int m = input.nextInt();
System.out.print("英语:");
int e = input.nextInt();
Student s = new Student();
s.setName(n);
s.setwuli(c);
s.setMath(m);
s.setEnglish(e);
ts.add(s);
}
//创建写入路径
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\score.txt"));
for (Student t : ts) {
System.out.println(t);
//写入数据
bw.write(String.valueOf(t));
bw.newLine();
bw.flush();
}
bw.close();
}
}
package com.student;
class Student{
private String name;
private int wuli;
private int math;
private int english;
public Student() {
}
public Student(String name, int wuli, int math, int english) {
this.name = name;
this.wuli = wuli;
this.math = math;
this.english = english;
}
//获得总成绩的方法
public int getSum() {
//返回总成绩
return wuli + math + english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getwuli() {
return wuli;
}
public void setwuli(int wuli) {
this.wuli = wuli;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
@Override
public String toString() {
return "姓名:" + name +
", 物理成绩:" + wuli +
", 数学成绩:" + math +
", 英语成绩:" + english;
}
}