有五个学生,每个学生有3门课的成绩。
从键盘输入以上数据(包括姓名,三门成绩),
输入的格式,如:zhangsan,30,40,60计算出总成绩,
并把学生的信息和计算出的总分数按高低顺序存放都在磁盘文件“stud.txt”中。
1,描述学生对象。
2,定义一个课操作学生对象的工具类。
思想:
1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
2,因为学生很多,那么就需要存储,使用到集合。因为要对学生的总分排序。所以可以使用TreeSet。
3,将集合的信息写入到一个文件中。
从键盘输入以上数据(包括姓名,三门成绩),
输入的格式,如:zhangsan,30,40,60计算出总成绩,
并把学生的信息和计算出的总分数按高低顺序存放都在磁盘文件“stud.txt”中。
1,描述学生对象。
2,定义一个课操作学生对象的工具类。
思想:
1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
2,因为学生很多,那么就需要存储,使用到集合。因为要对学生的总分排序。所以可以使用TreeSet。
3,将集合的信息写入到一个文件中。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
public class Demo {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//反转比机器
Comparator<Student> cmp=Collections.reverseOrder();
Set<Student> stus=StudentInfoTool.getStudents(cmp);
StudentInfoTool.write2File(stus);
}
}
class Student implements Comparable<Student>
{
private String name;
private int math,cn,eng;
private int sum;
public Student(String name, int math, int cn, int eng) {
this.name = name;
this.math = math;
this.cn = cn;
this.eng = eng;
this.sum=math+cn+eng;
}
public String getName() {
return name;
}
public int getSum() {
return sum;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
int num=new Integer(this.sum).compareTo(new Integer(o.sum));
if(num==0)
return this.name.compareTo(o.name);
return num;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(!(obj instanceof Student))
throw new ClassCastException("类型不匹配");
Student s=(Student)obj;
return this.name.equals(s.name)&&this.sum==s.sum;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return this.name.hashCode()+sum*11;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Student["+name+", "+math+", "+cn+", "+eng+"]";
}
}
class StudentInfoTool{
public static Set<Student> getStudents() throws Exception{
return getStudents(null);
}
public static Set<Student> getStudents(Comparator<Student> cmp) throws Exception{
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
Set<Student> stud=null;
if(cmp==null)
stud=new TreeSet<Student>();
else
stud=new TreeSet<Student>(cmp);
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
String [] info=line.split(",");
Student stu=new Student(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[2]),Integer.parseInt(info[3]));
stud.add(stu);
}
bufr.close();
return stud;
}
public static void write2File(Set<Student> stus) throws IOException{
BufferedWriter bufw=new BufferedWriter(new FileWriter("D:\\a\\stu.txt"));
for(Student stu:stus)
{
bufw.write(stu.toString()+"\t");
bufw.write(stu.getSum()+"");
bufw.newLine();
bufw.flush();
}
bufw.close();
}
}