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

时间:2021-07-30 17:23:12

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

练习:功能跳水比赛,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;
}
}

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

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

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