今天敲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;
}
}
检查下来发现这行代码出现问题:
avg = avg/scores.length-2;
不加括号先除法再减法 括号加上就好了
avg = avg/(scores.length-2);
更正运行结果如下 完美: