本帖最后由 洋葱头头 于 2016-2-14 20:38 编辑
- import java.io.*;
- import java.util.*;
- public class Test {
- public static void main(String[] args)throws Exception{
- //传入学生人数
- Student(5);
- }
- //键盘录入学生
- public static void Student(int number)throws Exception{
- //创建Scanner对象 接受从控制台输入
- Scanner in=new Scanner(System.in);
- //因为可能会出现姓名和总分都一样的学生,为了保证学生不丢失,建立List容器
- List list=new ArrayList();
- //循环录入学生到集合,排好顺序
- System.out.println("输入格式为: 姓名,语文,数学,英语");
- for(int x=1;x<=number;x++){
- System.out.println("请输入第"+x+"个学生的信息");
- String[] s=in.nextLine().split(",");
- int a=Integer.parseInt(s[1]);
- int b=Integer.parseInt(s[2]);
- int c=Integer.parseInt(s[3]);
- Student stu=new Student(s[0],a,b,c);
- list.add(stu);
- }
- //用比较器进行总分从高到低的排序
- Collections.sort(list,new StuCompare());
- //定义输出流输出到stu.txt
- BufferedWriter bufw=new BufferedWriter(new FileWriter("stu.txt"));
- for(Student stu:list){
- bufw.write(stu.getStu());
- bufw.newLine();
- bufw.flush();
- }
- //关闭资源
- in.close();
- bufw.close();
- }
- }
- //学生类型
- class Student{
- private String name;
- private int a, b, c,sum;
- //学生对象建立需要传入姓名和3门课的成绩
- Student(String name, int a, int b, int c){
- this.name=name;
- this.a=a;
- this.b=b;
- this.c=c;
- sum=a+b+c;
- }
- public int getsum(){
- return sum;
- }
- //输出一个符合格式的字符串
- public String getStu(){
- return name+" 数学:"+a+" 语文:"+b+" 英语:"+c+" 总分:"+sum;
- }
- }
- //定义比较器,按总分排序
- class StuCompare implements Comparator{
- public int compare(Student s1,Student s2){
- int a=new Integer(s2.getsum()).compareTo(s1.getsum());
- return a;
- }
复制代码
|