题目描述
现有 N(N\le 1000)N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在我们想知道这些同学中,哪些是“旗鼓相当的对手”?请输出他们的姓名。
所有人的姓名是按照字典序给出的,输出时也应该按照字典序输出所有对手组合。也就是说,这对组合的第一个名字的字典序应该小于第二个;如果两个组合中第一个名字不一样,则第一个名字字典序小的先输出;如果两个组合的第一个名字一样但第二个名字不同,则第二个名字字典序小的先输出。
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
3 fafa 90 90 90 lxl 95 85 90 senpai 100 80 91
输出 #1复制
fafa lxl lxl senpai
像这道题,就要充分发挥Java面向对象的优势。题目中给的数据有姓名(String)分数(int)类型的,如果但用数组的话能够存储,但是最后找出得分最高并对应输出其姓名就不是特别的好处理。所以本题大致思路:写一个内部类——学生类,里面包括学生的姓名和每门成绩,里面包括一个让外部调用的构造方法,用于主方法初始化对象使用,然后将每个学生的姓名与成绩输入并封装到一个对象中,然后把这个对象存入数组。这样数组的每个下标例如s[0]就相当于第一个学生对象,然后利用对象名.对象成员调用该学生的具体每一门成绩。
import java.util.Scanner;
public class P5741旗鼓相当的对手_加强版 {
public static void main(St