最近打算将之前学习过的小练习分享出来,算是巩固知识。虽然是小练习,但是越看越觉得有趣,温故而知新。
练习:功能跳水比赛,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; } }
另外,最近觉得泛型真的是一个很神奇的存在。设计者当初是怎么想到的呢?!聪明死了。
泛型可以用不确定的类型来表示任意的类型。简直大赞!!!