黑马程序员技术交流社区

标题: 好东西一起分享 [打印本页]

作者: 陈延真    时间: 2013-6-3 19:29
标题: 好东西一起分享
/*有五个学生,每个学生有3门课(语文、数学、英语)的成绩,
* 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课 成绩),
* 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
* 要求:stu.txt文件的格式要比较直观,打开这个文件, 就可以很清楚的看到学生的信息。
*/
public class StudentTest {
public static void main(String[] args) throws IOException {
  // 首先定义一个TreeSet,用于存储学生
  TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
   @Override
   public int compare(Student s1, Student s2) {
    // 主要条件的是分数的高低
    int num = (s2.getChinese() + s2.getMath() + s2.getEnglish())
      - (s1.getChinese() + s1.getMath() + s1.getEnglish());
    // 次要条件
    int num2 = (num == 0) ? (s1.getName().compareTo(s2.getName()))
      : num;
    return num2;
   }
  });
  // 键盘录入学生信息
  // 封装键盘录入
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("请输入格式为:姓名,语文成绩,数学成绩,英语成绩:");
  for (int x = 0; x < 5; x++) {
   String line = br.readLine();
   // 张三,90,80,70
   String[] strArray = line.split(",");
   // 创建学生对象
   Student s = new Student();
   s.setName(strArray[0]);
   s.setChinese(Integer.parseInt(strArray[1]));
   s.setMath(Integer.parseInt(strArray[2]));
   s.setEnglish(Integer.parseInt(strArray[3]));
   // 添加学生
   ts.add(s);
  }
  br.close();
  // 写入文本文件
  BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));
  bw.write("姓名\t语文成绩\t数学成绩\t英语成绩");
  bw.newLine();
  bw.flush();
  // 遍历TreeSet
  for (Student s : ts) {
   bw.write(s.getName() + "\t" + s.getChinese() + "\t" + s.getMath()
     + "\t" + s.getEnglish());
   bw.newLine();
   bw.flush();
  }
  bw.close();
  System.out.println("学生录入完毕");
}
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2