今天写demo出了小问题,狠狠的提醒自己

今天敲demo敲出来问题了,靠,狠狠的记住 先乘除后加减

先说demo的需求

需求:<主持人大赛> 有N位主持人参与打分,选手的最终分为去掉最高分和最低分之后N-2的平均分

然后是我的思路……

1.先建一个数组录入N个分数
2.对数组进行排序
3.用System.arraycopy方法复制除了第一个和最后一个之外的数据
4.然后求平均数

这是我的错误代码如下:

package Day06;
//计算平均分
import java.util.Arrays;
import java.util.Scanner;

public class CallTotalAvg{
    public static void main(String[] args){
        double[] scores = inputData(6); 
        System.out.println(Arrays.toString(scores));
        double avg = calAvg(scores); 
        System.out.println("平均分为:"+avg);
    }
    /** 该方法用于录入评委的分数 */
    public static double[] inputData(int N){
        double[] scores = new double[N];
        Scanner scan = new Scanner(System.in);
        for (int index = 0;index<scores.length;index++){
            System.out.println("请输入第"+(index+1)+"位评委的分数: ");
            scores[index] = scan.nextDouble();
        }
        return scores;
    }
    /** 该方法用于计算平均分 */
    public static double calAvg(double[] scores){
        double avg = 0.0; //平均分
        double []b = new double[scores.length+5];
        Arrays.sort(scores);
        System.arraycopy(scores,1,b,0,scores.length-2);
        System.out.println(Arrays.toString(b));
        for (int index = 0;index<b.length;index++){
            avg = avg + b[index];
        }
        System.out.println(avg);
        avg = avg/scores.length-2;
        return avg;
    }
}

代码运行如下:
m0m7ydgs.png

检查下来发现这行代码出现问题:
avg = avg/scores.length-2;

不加括号先除法再减法 括号加上就好了
avg = avg/(scores.length-2);

更正运行结果如下 完美:

m0m85vi2.png

打赏
评论区
头像