/**
* 有5个学生,每个学生有三门课的成绩
* 从键盘上录入以上数据(包括姓名,三门课成绩)
* 输入(zhang ,12,34,45)计算出总成绩
* 并把学生的信息和计算出的成绩高低保存到磁盘stud.txt中。
* @author Administrator
*
*/
public class IoExercise {
public static void main(String[] args) {
Set<IoExerciseStudent> set = IoExerciseStudentUtil.getStudent();
IoExerciseStudentUtil.writeStudent(set);
}
}
//学生对象
public class IoExerciseStudent implements Comparable<IoExerciseStudent>{
private String name;
private int ma,cn,en;
private int sum;
public IoExerciseStudent(String name, int ma, int cn, int en) {
this.name = name;
this.ma = ma;
this.cn = cn;
this.en = en;
this.sum = ma+cn+en;
}
@Override
public int compareTo(IoExerciseStudent o) {
int in= new Integer(this.sum).compareTo(new Integer(o.sum));
if(in == 0){
return this.name.compareTo(o.name);
}
return in;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + cn;
result = prime * result + en;
result = prime * result + ma;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + sum;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
IoExerciseStudent other = (IoExerciseStudent) obj;
if (cn != other.cn)
return false;
if (en != other.en)
return false;
if (ma != other.ma)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (sum != other.sum)
return false;
return true;
}
@Override
public String toString() {
return "name=" + name + ", sum=" + sum;
}
}
//调用学生方法
public class IoExerciseStudentUtil {
public static Set<IoExerciseStudent> getStudent(){
BufferedReader bufferedRead = new BufferedReader(new InputStreamReader(System.in));
String str = null;
IoExerciseStudent ioExerciseStudent;
Set<IoExerciseStudent> set = new TreeSet<IoExerciseStudent>();
try {
while((str = bufferedRead.readLine()) != null){
if("over".equals(str))break;
String[] strs = str.split(",");
ioExerciseStudent = new IoExerciseStudent(strs[0],Integer.parseInt(strs[1]), Integer.parseInt(strs[2]), Integer.parseInt(strs[3]));
set.add(ioExerciseStudent);
}
bufferedRead.close();
return set;
} catch (IOException e) {
e.printStackTrace();
}
return set;
}
public static void writeStudent(Set<IoExerciseStudent> set){
try {
BufferedWriter bufferedWrite = new BufferedWriter(new FileWriter("f:\\studet.txt",true));
for(IoExerciseStudent stu : set){
bufferedWrite.write(stu.toString());
bufferedWrite.newLine();
bufferedWrite.flush();
}
bufferedWrite.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}