程序填空题。请补充以下代码,完成题目要求。(注意:需要提交完整代码) 有一个团队由5个人组成。他们每个人给指导老师一个分数,去掉最高分,去掉最低分,剩下的3个分数的平均分就是该团队对指导老师的评分。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] grade = new int[5];
for(int i=0; i<grade.length; i++){
grade[i] = in.nextInt();
}
RR rr = new RT(grade);
double dd = rr.mark();
System.out.printf("%.2f",dd);
}
}
interface RR{
double mark();
}
class RT implements RR{
int[] grade;
public RT(int[] grade){
this.grade = grade;
}
}
在一行中给出5个不超过10的正整数(从小到大排列)。
输出格式:
输出集体评分,保留小数点后两位。
输入样例:
1 2 4 6 9
输出样例:
4.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] grade = new int[5];
for(int i=0; i<grade.length; i++){
grade[i] = in.nextInt();
}
RR rr = new RT(grade);
double dd = rr.mark();
System.out.printf("%.2f",dd);
}
}
interface RR{ //接口在 Java 中是一种特殊的抽象类型,它只包含抽象方法和常量
double mark(); //这个接口的作用是为实现它的类定义了一个必须提供的方法规范,任何实现了RR接口的类都必须实现mark()方法
}
class RT implements RR{
int[] grade;
public RT(int[] grade){
this.grade = grade;
}
@Override //复写修改方法
public double mark(){
int min = grade[0]; //关于从数组中找出最大值最小值的方法
int max = grade[0];
int sum = grade[0];
for(int i=1;i<grade.length;i++){
sum += grade[i];
if(min > grade[i])
min = grade[i];
if(max < grade[i])
max = grade[i];
}
return (sum-max-min)/(grade.length-2);
}
}
/*
另一种寻找最大最小值的办法
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int sum = 0;
for (int value : grade) {
if (value < min) {
min = value;
}
if (value > max) {
max = value;
}
sum += value;
}
Integer.MAX_VALUE是 Java 中int类型所能表示的最大值。将min初始化为这个值
,是为了确保在后续遍历数组元素的过程中,任何小于这个初始值的元素都能被正确地识
别为新的最小值并更新min的值。
*/