测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。 每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。 然后输出学生信息,按照如下格式: 姓名 年龄 成绩 学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
3 abc 20 99 bcd 19 97 bed 20 97
bcd 19 97 bed 20 97 abc 20 99
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Main {
static class Student {
String name;
int age;
int score;
public Student() {
}
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return name + " " + age + " " + score;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Student> list = new ArrayList<>();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String[] str = br.readLine().split(" ");
Student st = new Student(str[0], Integer.parseInt(str[1]), Integer.parseInt(str[2]));
list.add(st);
}
Collections.sort(list, new Comparator<Student>()
{
public int compare(Student o1, Student o2) {
int num1= o1.score-o2.score;
int num2= num1==0?o1.name.compareTo(o2.name):num1;
int num3= num2==0?o1.age-o2.age:num2;
return num3;
}
});
/*list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int num1= o1.score-o2.score;
int num2= num1==0?o1.name.compareTo(o2.name):num1;
int num3= num2==0?o1.age-o2.age:num2;
return num3;
}
});*/
for (Student ss : list) {
System.out.println(ss);
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt();
Student[] arr = new Student[n];
for (int i = 0; i < n; i++) arr[i] = new Student(scanner.next(),scanner.nextInt(),scanner.nextInt());
Arrays.sort(arr);
for (Student student : arr) System.out.println(student);
}
}
static class Student implements Comparable<Student>{
String name;
Integer age;
Integer score;
public Student(String name, Integer age, Integer score) {
this.name = name;
this.age = age;
this.score = score;
}
//将学生数据按成绩从低到高排序,如果成绩相同则按姓名字符的字典序由小到大排序,如果姓名的字典序也相同则按照学生的年龄从小到大排序
@Override
public int compareTo(Student o) {
if (this.score.compareTo(o.score)==0){
if (this.name.compareTo(o.name)==0) return this.age.compareTo(o.age);
else return this.name.compareTo(o.name);
}else return this.score.compareTo(o.score);
}
//姓名 年龄 成绩
@Override
public String toString() {
return name+" "+age+" "+score ;
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
class Student {
private String name;
private int age;
private int grade;
public Student(String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getGrade() {
return grade;
}
public String toString() {
return name + " " + age + " " + grade;
}
}
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
int n = scan.nextInt();
List list = new ArrayList(n);
for (int i = 0; i < n; i++) {
String name = scan.next();
int age = scan.nextInt();
int grade = scan.nextInt();
list.add(new Student(name, age, grade));
}
Collections.sort(list, new MyComparator());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
private static class MyComparator implements Comparator {
@Override
public int compare(Student o1, Student o2) {
if (o1.getGrade() != o2.getGrade()) {
return o1.getGrade() > o2.getGrade() ? 1 : -1;
} else if (o1.getName().compareTo(o2.getName()) != 0) {
if (o1.getName().compareTo(o2.getName()) > 0) {
return 1;
} else {
return -1;
}
} else {
return o1.getAge() - o2.getAge();//默认升序
}
}
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
/**
*
* @author shenling
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
Student[] stu = new Student[n];
sc.nextLine();
for (int i = 0; i < n; i++){
String[] info = sc.nextLine().split(" ");
stu[i] = new Student(info[0], Integer.parseInt(info[1]), Integer.parseInt(info[2]));
}
Arrays.sort(stu, new MyComparator());
for (int i = 0; i < n; i++){
System.out.println(stu[i].getName() + " " + stu[i].getAge() + " " + stu[i].getScore());
}
}
}
}
class MyComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
if (o1.getScore() > o2.getScore()){
return 1;
}
else if (o1.getScore() < o2.getScore()){
return -1;
}
else{
if (o1.getName().compareTo(o2.getName()) > 0){
return 1;
}
else if (o1.getName().compareTo(o2.getName()) == 0){
if (o1.getAge() > o2.getAge()){
return 1;
}
else if (o1.getAge() < o2.getAge()){
return -1;
}
else{
return 0;
}
}
else{
return -1;
}
}
}
}
class Student{
private String name;
private int age;
private int score;
public Student( String name, int age, int score){
this.name = name;
this.age = age;
this.score = score;
}
public String toString(){
return this.name + " " + this.age + " " + this.score;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the score
*/
public int getScore() {
return score;
}
/**
* @param score the score to set
*/
public void setScore(int score) {
this.score = score;
}
}