日期:2014-05-20  浏览次数:20626 次

下面的代码有漏洞,高人指点下,谢谢!!!
[code=Java][/code]package bmd.jsj.rj.oo1;

import java.io.*;

public class JiSuanFen {

/**
* 功能:有8个裁判进行打分,去掉一个最高分,
* 去掉一个最低分,最后得分为剩下的6个的平均分
* 作者:jacob
* 时间:2011年10月17日 11:51:57
*/
public static void main(String[] args) {
Judge judge = new Judge();

System.out.println(judge.lastFen());
}

}
class Judge{
float arr[]=null;
int size=8;
public Judge(){
arr=new float[size];
try{
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个裁判打的分数:");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
  arr[i]=Float.parseFloat(buf.readLine());
}
}
catch(Exception e){
System.out.println(e.toString());
}
}
public float lastFen(){
float allFen=0;
int min=this.minFens();
int max=this.maxFens();
for(int m=0;m<arr.length;m++){
if(m!=min&&m!=max){

allFen+=arr[m];
}
}
System.out.println("最后得分为:");
return allFen/(arr.length-2);

}
public int minFens(){
int minIndex=0;
float minFen=arr[0];
for(int i=0;i<arr.length;i++){
if(minFen>arr[i]){
minFen=arr[i];
minIndex=i;
}
}

return minIndex;
}
public int maxFens(){
int maxIndex=0;
float maxFen=arr[0];
for(int i=0;i<arr.length;i++){
if(maxFen<arr[i]){
maxFen=arr[i];
maxIndex=i;
}
}

return maxIndex;
}
}




当输入为如下时出现错误答案:
请输入第1个裁判打的分数:
10
请输入第2个裁判打的分数:
10
请输入第3个裁判打的分数:
10
请输入第4个裁判打的分数:
10
请输入第5个裁判打的分数:
10
请输入第6个裁判打的分数:
10
请输入第7个裁判打的分数:
10
请输入第8个裁判打的分数:
10
最后得分为:
11.666667


怎么修改这个程序,高人指点,感激不尽!!!!

------解决方案--------------------
Java code

public float lastFen(){
    float allFen=0;
    int min=this.minFens();
    int max=this.maxFens();
    if(min==max)//如果当最高最低取得同一个下标,MAX下标加1
        max=max+1;
    for(int m=0;m<arr.length;m++){
    if(m!=min&&m!=max){

    allFen+=arr[m];
    }
    }