import java.util.*; public class msBank01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //获取第一行(学生数) String s = sc.nextLine(); //创建一个排序Set 传进一个排序规则匿名内部类 TreeSet<Student> studentTreeSet = new TreeSet<>((o1, o2) -> { //根据总分--语文--数学--英语--姓名(字典序)进行排序 if (o1.getTotal() != o2.getTotal()) { return o2.getTotal() - o1.getTotal(); } else if (o1.getChinese() != o2.getChinese()) { return o2.getChinese() - o1.getChinese(); } else if (o1.getMath() != o2.getMath()) { return o2.getMath() - o1.getMath(); } else if (o1.getEnglish() != o2.getEnglish()) { return o2.getEnglish() - o1.getEnglish(); } else { return o1.getName().compareTo(o2.getName()); } }); //按行遍历 创建student塞入TreeSet for (int i = 0; i < Integer.parseInt(s); i++) { Student student = new Student(); String help = sc.nextLine(); String[] s1 = help.split(" "); student.setName(s1[0]); student.setChinese(Integer.parseInt(s1[1])); student.setMath(Integer.parseInt(s1[2])); student.setEnglish(Integer.parseInt(s1[3])); student.setTotal(Integer.parseInt(s1[1])+Integer.parseInt(s1[2])+Integer.parseInt(s1[3])); studentTreeSet.add(student); } //遍历TreeSet index代表rank(排名) //plus意义,排名相同时,plus代替index++ int index = 0; int plus = 1; Student pre = new Student(); for (Student student : studentTreeSet) { if (index!=0&&pre.getTotal()==student.getTotal()&&pre.getChinese()== student.getChinese()&&pre.getMath()==student.getMath()&&pre.getEnglish()== student.getEnglish()){ print(student,index); plus++; }else { index = index+plus; plus=1; print(student,index); } //pre记录上一个学生,比较是否两人排名一样 pre = student; } } //提取出的print方法 public static void print(Student student,int rank){ System.out.println("rank:"+rank+" name:"+student.getName()+" total:"+student.getTotal()+" chinese:"+student.getChinese()+" math:"+student.getMath()+" english:"+student.getEnglish()); } //学生类 static class Student{ String name; int Chinese; int Math; int English; int Total; //...getter and setter... }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); if ("1".equals(s)){ //1 int res = 0; while (sc.hasNext()){ String str = sc.nextLine(); if (str!=null&&str.length()!=0){ res++; } } System.out.println(res); }else if ("Q".equals(s)){ //Quit System.out.println("Quit"); }else { System.out.println("Wrong input, Please re-choose\n" + "Menu Function Test\n" + "1: Count Lines\n" + "Q: Quit"); } } }第一题当总分、语文、数学、英语同分时 排名相同 按字典序排序姓名
输入:
第一行:学生人数
接下来每一行:姓名 语文分 数学分 英语分
输出:(分数全相同排名一样,按姓名字典序排序)
rank1 :name: total: chinese: math: english:
rank2:...
rank2:...
rank4:...
第一行:学生人数
接下来每一行:姓名 语文分 数学分 英语分
输出:(分数全相同排名一样,按姓名字典序排序)
rank1 :name: total: chinese: math: english:
rank2:...
rank2:...
rank4:...
第二题:
第一行输入"1" 判断有几行非空
输入"Q"打印“Quit”
输入其他:打印
Wrong input, Please re-choose
Menu Function Test
1: Count Lines
Q: Quit
第一行输入"1" 判断有几行非空
输入"Q"打印“Quit”
输入其他:打印
Wrong input, Please re-choose
Menu Function Test
1: Count Lines
Q: Quit
难度上感觉是两道简单题
全部评论
(0) 回帖