利用java访问记事本xinxi.txt,里面为若干行学生信息,要求:筛选出学号为202100946开头并且性别为女的学生信息,符合要求的学生以集合类的形式存储,并按学号升序排序,然后输出。
7条回答 默认 最新
- CSDN专家-sinJack 2021-05-18 15:34关注
//测试类 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class StudentTest { public static void main(String[] args) throws Exception{ // 设置防止乱码格式(换成自己电脑所在位置) InputStreamReader isr = new InputStreamReader(new FileInputStream( "D:/xinxi.txt"), "utf8"); // 读取文件 BufferedReader br = new BufferedReader(isr); // 创建集合 ArrayList<Student> ar = new ArrayList<Student>(); Student student = null; String line=null; while ((line = br.readLine()) != null) { // 每次循环创建新的学生对象 student = new Student(); // 切割字符串 String[] strAy = line.split(" "); // 设置属性 student.setName(strAy[0]); student.setStuNO(strAy[1]); student.setSex(strAy[2]); student.setAddress(strAy.length==3?null:strAy[3]); if(student.getStuNO().startsWith("202100946")&&student.getSex().equals("女")){ ar.add(student); } } br.close(); // 集合排序使用匿名内部类Collections Collections.sort(ar, new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { // 排序主要条件:按学号升序排序 int num=0; if(Long.parseLong(s1.getStuNO())>Long.parseLong(s2.getStuNO())){ return 1; }else if (Long.parseLong(s1.getStuNO())<Long.parseLong(s2.getStuNO())){ return -1; } return num; } }); for (Student stu: ar) { System.out.println(stu); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 乌班图ip地址配置及远程SSH
- ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
- ¥15 PSPICE制作一个加法器
- ¥15 javaweb项目无法正常跳转
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
- ¥15 java 的protected权限 ,问题在注释里