九个评委打分,百分制,保留小数点后一位。设计一个接口完成两种打分方法 1.去最高和最低分2.不去最高和最低分
采纳一下吧,答案我发你
public static void main(String[] args)(){
List<Double> scoreList = new ArrayList<>(9);
Scanner scan = new Scanner(System.in);//键盘输入
for (int i = 0; i < scoreList.size(); i++) {
scoreList.add(scan.nextInt());
}
Collections.sort(scoreList);
//方法一,不去最高分和最低分
unDeleteMaxAndMin(scoreList);
//方法二,去掉最高分和最低分
deleteMaxAndMin(scoreList);
}
//去掉最高分和最低分
public List<Double> deleteMaxAndMin(List<Double> list){
list = list.subList(1,list.size()-1);
for (int i = 0; i < list.size(); i++) {
System.out.println("从小到大:" + list.get(i));
}
return list;
}
//不去掉最高分和最低分
public List<Double> unDeleteMaxAndMin(List<Double> list){
for (int i = 0; i < list.size(); i++) {
System.out.println("从小到大:" + list.get(i));
}
return list;
}
public static void main(String[] args) {
//定义评委数量
int num = 9;
Scanner scan = new Scanner(System.in);
//采集计算平均分方式
System.out.println("请选择打分方式(1为去掉最高分和最低分,2为不去掉)");
int isRemove;
while (true){
String isRemoveStr = scan.next();
if("1".equals(isRemoveStr)||"2".equals(isRemoveStr)){
isRemove = Integer.valueOf(isRemoveStr);
break;
}
System.out.println("请选择打分方式(1为去掉最高分和最低分,2为不去掉)");
}
//采集评委打分
System.out.println("请"+num+"位评委依次打分(0.0~100.0),每位评委打分后按回车");
BigDecimal min = new BigDecimal("0.0");
BigDecimal max = new BigDecimal("100.0");
List<BigDecimal> fractions = new ArrayList<>();
for (int i = 0;i<num;i++){
BigDecimal fraction;
while (true){
System.out.print("请"+(i+1)+"号评委打分:");
try {
String fractionStr = scan.next();
fraction = new BigDecimal(fractionStr);
fraction = fraction.setScale(1, RoundingMode.DOWN);
} catch (NumberFormatException e) {
System.out.println("请输入正确的分数(0.0~100.0),打分后按回车");
continue;
}
if(fraction.compareTo(max)>0||fraction.compareTo(min)<0){
System.out.println("请输入正确的分数(0.0~100.0),打分后按回车");
continue;
}
fractions.add(fraction);
break;
}
}
System.out.println(num+"位评委打分如下:"+fractions.toString());
//计算总分
BigDecimal sum = BigDecimal.ZERO;
for(BigDecimal item: fractions){
sum = sum.add(item);
}
System.out.println("总分:"+sum);
BigDecimal avg;
if(isRemove == 1){
BigDecimal max1 = Collections.max(fractions);
BigDecimal min1 = Collections.min(fractions);
System.out.println("去掉最高分:"+max1);
System.out.println("去掉最低分:"+min1);
avg = sum.subtract(max1).subtract(min1).divide(BigDecimal.valueOf(num - 2),1,RoundingMode.DOWN);
}else{
avg = sum.divide(BigDecimal.valueOf(num),1,RoundingMode.DOWN);
}
System.out.println("平均分:"+avg);
}