一个关于考研机试的问题(牛客网 清华大学考研真题 成绩排序)

麦克斯韦的妖精 2017-07-17 05:03:19
今天打开牛客网打算做一道考研的机试题,选择了牛客网上的第一道,是清华大学的一道题目,名字叫成绩排序(题目链接:https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1?tpId=40&tqId=21333&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking)。题目叙述如下



以下是我写的Java代码:
import java.util.*;
/**
* 清华大学 成绩排序
* @author sdu20
*
*/
public class Main {

private String name;
private int grade;
private int num;
private static Main[] people;

public Main(String name,int grade,int num){
this.name = name;
this.grade = grade;
this.num = num;
}

public String getName(){
return name;
}

public int getGrade(){
return grade;
}

public int getNum(){
return num;
}

public boolean bigger(Main he){
if(this.grade>he.getGrade())
return true;
else if(this.grade<he.getGrade())
return false;
else if(this.num<he.getNum())
return false;
else
return true;
}

public boolean less(Main he){
if(this.grade>he.getGrade())
return false;
else if(this.grade<he.getGrade())
return true;
else if(this.num<he.getNum())
return false;
else
return true;
}

public void resetValue(String name,int grade,int num){
this.name = name;
this.grade = grade;
this.num = num;
}

public static Main[] upSort(){
for(int i = 0;i<people.length-1;i++){
int index = i;
for(int j = i+1;j<people.length;j++){
if(people[index].bigger(people[j])){
index = j;
}
}
//System.out.println(index);
if(index != i){

String iname = people[i].getName();
int igrade = people[i].getGrade();;
int inum = people[i].getNum();
people[i].resetValue(people[index].getName(),people[index].getGrade(),people[index].getNum());
people[index].resetValue(iname, igrade, inum);
}

}

return people;
}

public static Main[] downSort(){
for(int i = 0;i<people.length-1;i++){
int index = i;
for(int j = i+1;j<people.length;j++){
if(people[index].less(people[j])){
index = j;
}
}
//System.out.println(index);
if(index != i){

String iname = people[i].getName();
int igrade = people[i].getGrade();;
int inum = people[i].getNum();
people[i].resetValue(people[index].getName(),people[index].getGrade(),people[index].getNum());
people[index].resetValue(iname, igrade, inum);
}

}

return people;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int len = in.nextInt();
int kind = in.nextInt();
people = new Main[len];
for(int i = 0;i<len;i++){
String name = in.next();
int grade = in.nextInt();
people[i] = new Main(name,grade,i);
}

if(kind==0){
downSort();
}else if(kind==1){
upSort();
}
for(int i = 0;i<people.length;i++){
System.out.println(people[i].getName()+" "+people[i].getGrade());
}

}

}

但是提交之后提示不通过


于是我就讲它提示出错的测试用例粘贴到eclipse中,发现输出结果与它给的结果是一样的。

由于是第一次用牛客网做ACM题,所以不知道是不是有什么套路,还请大神们不吝赐教。
...全文
251 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
自己顶一下

23,409

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧