写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)
2016-03-31 11:42
726 查看
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
import com.itheima.bean.Student;
public class Test1 {
}
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
import com.itheima.bean.Student;
public class Test1 {
/** * 1、有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩), * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。 * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。 * @param args * @throws IOException */ /** * 分析: 1.创建scanner对象,输入学生信息 * 2.创建集合,采用TreeSet,排序,自定义比较器 * 3.将数据用","分割 并封装成学生对象,存入集合 * 4.创建输出流,采用FileWrite * 5.遍历集合,将数据写入文件 * 6.关流 * 测试用例: * 顾雨磊,88,99,100 * 周红伟,110,120,130 * 黑马,100,100,100 * 程序员,120,150,138 * IT人,133,148,125 */ public static void main(String[] args) throws IOException { //1.键盘输入学生的信息,存入集合,自定义比较器 ,并排好序 TreeSet <Student> ts = getStuMassage(); //2.定义输出流,遍历集合,将数据写入文件 FileWriter fw = new FileWriter("stu.txt"); for (Student s : ts) { System.out.println(s); //将学生对象信息写入文件 fw.write(s.toString()); //添加回车换行 fw.write("\r\n"); } System.out.println("学生信息写入完毕!已存在本项目下stu.txt文件中!"); //关闭输出流 fw.close(); } public static TreeSet<Student> getStuMassage() { Scanner sc = new Scanner(System.in); System.out.println("请输入5名学生的信息,格式如下:name,chinese,math,english"); //创建集合存储学生信息 TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() { @Override //重写比较器方法 public int compare(Student s1, Student s2) { int num = s2.getSum() - s1.getSum(); //总分相同也存入集合 return num == 0 ? 1 : num ; } }); //5名学生 用集合的size做判断 从0-4 while(ts.size() < 5){ //输入一行字符串 String line = sc.nextLine(); //用,号分割 字符串line 存入字符数组中 String arr[] = line.split(","); //将字符串 数组 添加到集合中,字符串先转换为整数 Integer chinese = Integer.parseInt(arr[1]); Integer math = Integer.parseInt(arr[2]); Integer english = Integer.parseInt(arr[3]); //封装成学生对象,存入集合 ts.add(new Student(arr[0],chinese,math,english)); } //返回集合 return ts; }
}
相关文章推荐
- c#将datagridview信息导入excel
- 32、浅谈CallableStatement可调用语句!
- 解决 gradlew 构建错误: 编码 GBK的不可映射字符
- top命令
- 多个Target管理控制生产和开发版本
- 什么是虚拟机
- 理解RESTful架构
- WPF binding<一> Data Binding在WPF中的地位
- java中怎么才能替换Map集合中的健和值,只能有一个健和值
- 如何设置Eclipse新建项目的默认编码方式
- Git常用命令
- 微信开发准备(一)——Maven仓库管理新建WEB项目
- SharedPreferences存储和读取数据
- java异常体系结构详解
- (4.5.3.5)Failed to resolve : junit:junit:4.12 in android studio 1.4
- Android源码(好几百个实用的源码分享)
- Xcode因为证书问题经常报的那些错
- 在网页中运行代码的实现
- Lua初学笔记
- SOA与微服务的区别