• 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;
        }
    }

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

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

  • 相关阅读:
    关于Dijkstra三种堆速度的研究
    [BZOJ1041][HAOI2008]圆上的整点[数论]
    [BZOJ2482][Spoj1557] Can you answer these queries II[线段树]
    [CF600E]Lomsat gelral[dsu on tree/树上启发式合并]
    [BZOJ3495]PA2010 Riddle[2-SAT]
    [9.26模拟] 伪造
    [bzoj4722] 由乃
    [bzoj2004] 公交线路
    [51nod1314] 定位系统
    [51nod1143] 路径和树
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/8367176.html
Copyright © 2020-2023  润新知