目录
题目:
给定一段字符串,里面包含若干个学生上机和笔试成绩如
String str = "张三:上机成绩=90,笔试成绩=78;
李四:上机成绩=68,笔试成绩=98;
王五:上机成绩=48,笔试成绩=58;
赵六:上机成绩=55,笔试成绩=11;
jim:上机成绩=44,笔试成绩=55;
tom:上机成绩=22,笔试成绩=55";
要求:
按照总分进行升序显示输出
代码展示:
Student类
学生姓名,上机成绩,笔试成绩 属性
计算成绩总分 构造方法
改写toString()方法 compareTo()方法
package com.ffyc.javaapi.zy.zy2.T5;
public class Student implements Comparable<Student>{
private String name;
private int sjGrade;
private int bsGrade;
public Student(String name, int sjGrade, int bsGrade) {
this.name = name;
this.sjGrade = sjGrade;
this.bsGrade = bsGrade;
}
public int Grade(){
int zfGrade = this.sjGrade + this.bsGrade;
return zfGrade;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sjGrade=" + sjGrade +
", bsGrade=" + bsGrade +
'}';
}
@Override
public int compareTo(Student o) {
//降序
//return o.Grade() - this.Grade();
//升序
return this.Grade() - o.Grade();
}
}
TestStudent类
package com.ffyc.javaapi.zy.zy2.T5;
import java.util.Arrays;
public class TestStudent {
public static void main(String[] args) {
//String类型字符串存储学生各项信息
String str = "张三:上机成绩=90,笔试成绩=78;"+
"李四:上机成绩=68,笔试成绩=98;"+
"王五:上机成绩=48,笔试成绩=58;"+
"赵六:上机成绩=55,笔试成绩=11;"+
"jim:上机成绩=44,笔试成绩=55;"+
"tom:上机成绩=22,笔试成绩=55";
//String[]类型数组,通过spilt()方法将学生信息分割
String[] strings = str.split(";");
//Student[]类型数组存储学生各项信息
Student[] students = new Student[strings.length];
//通过循环,将学生信息存储到students数组中
for (int i = 0;i<strings.length;i++){
String s = strings[i];
//substring()截取指定位置信息 indexOf()查找指定元素在字符串中的位置 lastIndexOf()从后查找指定元素在字符串中的位置
String name = s.substring(0, s.indexOf(":"));
String sjGrade = s.substring(s.indexOf("=")+1, s.indexOf(","));
String bsGrade = s.substring(s.lastIndexOf("=")+1);
//new 学生对象
Student student = new Student(name,Integer.parseInt(sjGrade),Integer.parseInt(bsGrade));
students[i] = student;
}
//通过改写后的sort()方法对学生信息进行升序排序
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
}