Java 面向对象编程小练习(曾经)

最近打算将之前学习过的小练习分享出来,算是巩固知识。虽然是小练习,但是越看越觉得有趣,温故而知新。

练习:功能跳水比赛,8个评委评分。运动员成绩去掉最高和最低之后的平均分

代码实例:

1.导包

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

2.测试类

public class Demo6 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Judge judge=new Judge();
        //judge.getLastFen(); 不打印,怎么出结果哦
        System.out.println(judge.getLastFen());

    }
}

3.Judge类(封装方法,很好的面向对象编程)

class Judge {
    // 定义一个可以存放8个小数
    float fens[] = null;
    // 在这里定义,方便以后改
    int size = 8;

    // 构造函数代码初始化专用,显得更加规范
    public Judge() {
        fens = new float[size];
        // 初始化
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // for(int i=0;i<fens.length;i++){
        // 不能写在这里:System.out.println("请输入第"+(i+1)+"裁判的分数");
        try {
            for (int i = 0; i < fens.length; i++) {
                System.out.println("请输入第" + (i + 1) + "裁判的分数");
                
                fens[i]=Float.parseFloat(br.readLine());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    // 得到运动员的最后得分
    public float getLastFen() {
        // 功能:
        // 找到最低、最高(没办法去掉,只能找到它的下标)以及去掉最低最高得出最后得分
        float allFen = 0;
        int minIndex = this.getLowFenIndex();
        int maxIndex = this.getHightFenIndex();
        for (int i = 0; i < fens.length; i++) {
            if (i != minIndex && i != maxIndex) {
                allFen += fens[i];
            }
        }

        return allFen / (fens.length - 2);

    }

    public int getLowFenIndex() {
        // 选择法:认为第一个是最低分
        float minFen = fens[0];
        int minIndex = 0;

        for (int i = 1; i < fens.length; i++) {
            // 修改最低分
            if (minFen < fens[i]) {
                minFen = fens[i];
                minIndex = i;
            }
        }
        return minIndex;
    }

    public int getHightFenIndex() {
        // 选择法:认为第一个是最低分
        float maxFen = fens[0];
        int maxIndex = 0;
        for (int i = 1; i < fens.length; i++) {
            // 修改最低分
            if (maxFen < fens[i]) {
                maxFen = fens[i];
                maxIndex = i;
            }
        }
        return maxIndex;
    }
}

另外,最近觉得泛型真的是一个很神奇的存在。设计者当初是怎么想到的呢?!聪明死了。

泛型可以用不确定的类型来表示任意的类型。简直大赞!!!

posted @ 2018-01-27 20:36  江河湖泊  阅读(1235)  评论(0编辑  收藏  举报