民生银行计算机研发笔试题,民生银行提前批 “民芯计划” 技术岗笔试算法题...

本文介绍了一种Java实现的Student类,用于处理学生的学习成绩,包括语文、数学、英语。通过自定义Comparator进行排序,不仅考虑总分,还关注各科成绩的差异化。最终输出按总分和特定科目分数排名的学生信息。
摘要由CSDN通过智能技术生成

class Student{

//学生类

public String name;

public int chinese;

public int math;

public int english;

public int total;

public int rank;

public Student(String name,int chinese,int math,int english){

this.name = name;

this.chinese = chinese;

this.math = math;

this.english = english;

this.total = this.chinese+this.math+this.english;

}

//最终输出的结果

@Override

public String toString(){

StringBuilder sb = new StringBuilder();

sb.append("rank:").append(rank).append(" ").

append("name:").append(name).append(" ").

append("total:").append(total).append(" ").

append("chinese:").append(chinese).append(" ").

append("math:").append(math).append(" ").

append("english:").append(english);

return sb.toString();

}

}

public class T1 {

public static void main(String[] args) throws IOException {

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

String str;

while((str = bf.readLine()) !=null){

Student stu[] = new Student[Integer.valueOf(str)];

String []data;

String name;

int chinese,math,english;

//处理输入

for(int i=0;i

data = bf.readLine().split(" ");

name = data[0];

chinese = Integer.valueOf(data[1]);

math = Integer.valueOf(data[2]);

english = Integer.valueOf(data[3]);

stu[i] = new Student(name,chinese,math,english);

}

//排序处理 重写Comparator

Arrays.sort(stu, new Comparator() {

@Override

public int compare(Student o1, Student o2) {

if(o1.total!=o2.total){//总分

return o2.total-o1.total;

}else if(o1.chinese!=o2.chinese){

return  o2.chinese-o1.chinese;

}else if(o1.math != o2.math){

return  o2.math-o1.math;

}else if(o1.english!=o2.english){

return  o2.english-o1.english;

}else {

return o1.name.compareTo(o2.name);

}

}

});

Student pre = stu[0];

int rank = 1;

stu[0].rank = rank;

rank++;

// 重点排序

for(int i=1;i

if(stu[i].total!=pre.total||stu[i].chinese!=pre.chinese||stu[i].math!=pre.math||stu[i].english!=pre.english){

stu[i].rank = rank;

}else{

//前后两个相同分数

stu[i].rank = pre.rank;

}

pre = stu[i];

rank++;

}

for(int i=0;i

System.out.println(stu[i]);

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值