import java.util.Arrays;
public class text5 {
public static void main(String[] args) {
String s = "张三:上机成绩=90,笔试成绩=78;"
+ "李四:上机成绩=68,笔试成绩=98;"
+ "王五:上机成绩=48,笔试成绩=58;"
+ "赵六:上机成绩=55,笔试成绩=11;"
+ "jim:上机成绩=44,笔试成绩=55;"
+ "tom:上机成绩=22,笔试成绩=55;";
String [] str = s.split(";");
Demo5 [] stu = new Demo5[str.length];
for (int i = 0; i < str.length; i++) {
String s1 = str[i];
String name = s1.substring(0,s1.indexOf(":"));
//Integer.parseInt 方法的作用, 就是从字符串转换成一个10进制的整数
//s1.indexOf(",")第一个,的下标
//public String substring(int beginIndex)返回一个字符串,该字符串是此字符串的子字符串。
int m = Integer.parseInt(s1.substring(s1.indexOf("=") + 1, s1.indexOf(",")));
int n = Integer.parseInt(s1.substring(s1.lastIndexOf("=")+1));
int sum = m+n;
Demo5 student =new Demo5(name,m,n,sum);
stu[i] = student;
}
System.out.println("按总分升序排序:");
Arrays.sort(stu);
System.out.println(Arrays.toString(stu));
}
}
public class Demo5 implements Comparable<Demo5> {
private String name;
private int m;//上机成绩
private int n;//笔试成绩
private int sum;//总成绩
public Demo5()
{
}
public Demo5(String name,int m,int n,int sum)
{
this.name = name;
this.m = m;
this.n = n;
this.sum = sum;
}
/*
* if (length < INSERTIONSORT_THRESHOLD) {
for (int i=low; i<high; i++)
for (int j=i; j>low &&
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
swap(dest, j, j-1);
return;*/
@Override
public int compareTo(Demo5 o) {
return o.sum-this.sum;//>0是升序 <0 是降序 this.sum 是dest[j-1]
}
@Override
public String toString() {
return "Student{" +
"姓名='" + name +
", 上机成绩=" + m +
", 笔试成绩=" + n +
", 总分=" + sum +
"}\n";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}