您的位置:首页 > 其它

有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)

2015-12-31 23:11 726 查看
/*
* 3、 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,
* 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),
* 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
* 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息
*
*/
import java.io.*;
import java.util.*;
public class Test3 {
public static void main(String[] args)throws Exception{
//传入学生人数
Student(5);
}
//键盘录入学生,保存到stu.txt的方法
public static void Student(int number)throws Exception{
//创建Scanner对象 接受从控制台输入
Scanner in=new Scanner(System.in);
//因为可能会出现姓名和总分都一样的学生,为了保证学生不丢失,建立List容器
List<Student> 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<Student>{
public int compare(Student s1,Student s2){
int a=new Integer(s2.getsum()).compareTo(s1.getsum());
return a;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: