A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈延真 中级黑马   /  2013-6-3 19:29  /  1059 人查看  /  0 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

/*有五个学生,每个学生有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("学生录入完毕");
}
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马