购物网站模板,如何做电商网站分析报告,网络服务合同侵权问题,在线做venn图网站需求#xff1a; 现有两门选修课#xff0c;每门选修课都有一部分学生选修#xff0c;每个学生都有选修课的成绩#xff0c;需要你找出同时选修了两门选修课的学生#xff0c;先按照班级进行划分#xff0c;班级编号小的先输出#xff0c;每个班级按照两门选修课成绩和的…需求 现有两门选修课每门选修课都有一部分学生选修每个学生都有选修课的成绩需要你找出同时选修了两门选修课的学生先按照班级进行划分班级编号小的先输出每个班级按照两门选修课成绩和的降序排序成绩相同时按照学生的学号升序排序。 输入描述 第一行为第一门选修课学生的成绩 第二行为第二门选修课学生的成绩每行数据中学生之间以英文分号分隔每个学生的学号和成绩以英文逗号分隔学生学号的格式为8位数字(2位院系编号入学年份后2位院系内部1位专业编号所在班级3位学号)学生成绩的取值范围为[0,100]之间的整数两门选修课选修学生数的取值范围为[1-2000]之间的整数。 输出描述 同时选修了两门选修课的学生的学号如果没有同时选修两门选修课的学生输出NULL否则先按照班级划分班级编号小的先输出每个班级先输出班级编号(学号前五位)然后另起一行输出这个班级同时选修两门选修课的学生学号学号按照要求排序(按照两门选修课成绩和的降序成绩和相同时按照学号升序)学生之间以英文分号分隔。 输入: 01202021,75;01201033,95;01202008,80;01203006,90;01203088,100 01202008,70;01203088,85;01202111,80;01202021,75;01201100,88 输出: 01202 01202008;01202021 01203 01203088 编码
ublic class SelectCourse {public static void main(String[] args) {Scanner scanner new Scanner(System.in);//输入字符串数据String[] strs_1 scanner.nextLine().split(;);String[] strs_2 scanner.nextLine().split(;);//集合ListStudents list1 parseData(strs_1);ListStudents list2 parseData(strs_2);//集合SetString sets new HashSet();//调用方法ListStudents list sameCourse(list1,list2,sets);//sets排序,转换成ListListString my new ArrayList(sets);Collections.sort(my);//调用排序方法getComparator(list,my);}/*** 1.获取学生信息** param strs* return*/private static ListStudents parseData(String[] strs) {ListStudents list new ArrayList();//循环for (int i 0; i strs.length; i) {//分割字符串String[] ss strs[i].split(,);//将对象添加集合中list.add(new Students(ss[0], Integer.parseInt(ss[1])));}return list;}/*** (2) 统计同时选修两门选修课的学生信息* param list1 第一门选修课学生的成绩* param list2 第二门选修课学生的成绩* param sets 学号前五位* return*/public static ListStudents sameCourse(ListStudents list1, ListStudents list2, SetString sets) {ListStudents list new ArrayList();//循环比较for (Students stu1 :list1) {for (Students stu2 :list2) {//判断学号是否相同if (stu1.getNo().equals(stu2.getNo())) {//累计成绩和int sum stu1.getScore() stu2.getScore();//添加到集合中list.add(new Students(stu1.getNo(), sum));//截取学号前五位-存入set集合中过滤重复的String strNo stu1.getNo().substring(0, 5);sets.add(strNo);}}}//判断如果没有则返回NULLif (list.size() 0) {System.out.println(NULL);}return list;}/*** (3) 学号按照要求排序(按照两门选修课成绩和的降序成绩和相同时按照学号升序* param list* param sets*/public static void getComparator(ListStudents list,ListString sets){//外部排序Collections.sort(list,new ComparatorStudents(){Overridepublic int compare(Students o1, Students o2) {//升序return Integer.valueOf(o1.getNo())-Integer.valueOf(o2.getNo());}});//输出信息for (String str:sets) {System.out.println(str);//对象StringBuilder buildernew StringBuilder();//循环for (Students lls:list) {//是否相等if(str.equals(lls.getNo().substring(0,5))){builder.append(lls.getNo()).append(;); //添加}}System.out.println(builder.toString());}}}//学生类
class Students {private String no;private int score;.....setXXX and getXXX......public Students(String no, int score) {this.no no;this.score score;}Overridepublic String toString() {return no score;}
}
效果