JAVA测试题-定义一个运动员(Sportsman)类,包含姓名(name)、跳高(highJump)

定义一个运动员(Sportsman)类,包含姓名(name)、跳高(highJump)、跳远(longJump),鞍马(sideHorse)属性以及speak()方法,该方法的功能是,输出自己的相关信息。
Sportsman类实现Comparable接口,实现比较两个Sportsman对象的大小,比较规则是:跳高占20%权重,跳远占30%权重,鞍马占50%权重,以综合计算三项权重和之后的值作为判断对象大小的依据。
最后,定义一个测试类,生成一个数组,该数组有6个元素,每个元素类型是Sportsman,调用Arrays.sort方法对该数组排序。 按照以上描述,以及输出样例的结果,完成程序代码的填写。

【输入形式】

【输出形式】

数组排序前以及排序后的结果。

【样例输入】

【样例输出】

array sort before:
I am zhangsan,my highJump 90.0,my longJump 95.0,my sideHorse 92.0
I am lisi,my highJump 91.0,my longJump 92.0,my sideHorse 95.0
I am wangwu,my highJump 95.0,my longJump 91.0,my sideHorse 93.0
I am zhaoliu,my highJump 92.0,my longJump 94.0,my sideHorse 90.0
I am zhouqi,my highJump 89.0,my longJump 90.0,my sideHorse 88.0
I am zhengba,my highJump 86.0,my longJump 92.0,my sideHorse 93.0

array sort after:
Sportsman [name=zhouqi,highJump=89.0,longJump=90.0,sideHorse=88.0]
Sportsman [name=zhengba,highJump=86.0,longJump=92.0,sideHorse=93.0]
Sportsman [name=zhaoliu,highJump=92.0,longJump=94.0,sideHorse=90.0]
Sportsman [name=zhangsan,highJump=90.0,longJump=95.0,sideHorse=92.0]
Sportsman [name=wangwu,highJump=95.0,longJump=91.0,sideHorse=93.0]
Sportsman [name=lisi,highJump=91.0,longJump=92.0,sideHorse=95.0]


import java.util.Arrays;

class Sportsman implements Comparable<Sportsman> {
    
    
    private String name;
    private float highJump, longJump, sideHorse;public Sportsman(String name, float a, float b, float c) {
    
    
		setName(name);
        setHeight(a);
        setWeight(b);
        setScore(c);//写入姓名等信息,也可以用this.运算}
    public String getName() {
    
    
        return name;
    }
    public void setName(String name) {
    
    
        this.name = name;
    }
    public float getHeight() {
    
    
        return highJump;
    }
    public void setHeight(float height) {
    
    
        this.highJump = height;
    }public float getWeight() {
    
    return longJump;}public void setWeight(float weight) {
    
    this.longJump = weight;}public float getScore() {
    
    return sideHorse;}public void setScore(float score) {
    
    this.sideHorse = score;}
    public void speak() {
    
    
        System.out.println("I am "+name+",my highJump "+highJump+",my longJump "+longJump+",my sideHorse "+sideHorse);
        //按要求写明speak的输出语句
    }

以下为重点,重写object类里的compareTo

    //重点 一定要有大于小于等于三种情况
    public int compareTo(Sportsman o) {
    
    
        if(this.highJump*0.2+this.longJump*0.3+this.sideHorse*0.5>o.highJump*0.2+o.longJump*0.3+o.sideHorse*0.5){
    
    
            return 1;
        }
        else if (this.highJump*0.2+this.longJump*0.3+this.sideHorse*0.5<o.highJump*0.2+o.longJump*0.3+o.sideHorse*0.5){
    
    
            return -1;
        }
        else {
    
    
            return 0;
        }
    }
}
    public  String  toString(){
    
    
        return "Sportsman [name="+name+",highJump="+highJump+",longJump="+longJump+",sideHorse="+sideHorse+"]";
    }//主函数中println该对象时直接调用该toString返回的语句
}

以下为主函数

public class TestCompare {
    
    
    public static void main(String[] args) {
    
    
        int i;
        Sportsman ps[] = new Sportsman[6];
        ps[0] = new Sportsman("zhangsan", 90, 95, 92);
        ps[1] = new Sportsman("lisi", 91, 92, 95);
        ps[2] = new Sportsman("wangwu", 95, 91, 93);
        ps[3] = new Sportsman("zhaoliu", 92, 94, 90);
        ps[4] = new Sportsman("zhouqi", 89, 90, 88);
        ps[5] = new Sportsman("zhengba", 86, 92, 93);
        System.out.println("array sort before:");
        for (i = 0; i < ps.length; i++) {
    
    
            ps[i].speak();
        }
        Arrays.sort(ps);//调用该语句来进行排序
        System.out.println("\narray sort after:");
        for (i = 0; i < ps.length; i++) {
    
    
            System.out.println(ps[i]);
        }
    }
}

在书学compareTo时一定要注意三种return情况,如果只有两种即无法得到正确结果。

猜你喜欢

转载自blog.csdn.net/weixin_51280571/article/details/121450619