在cmd编译
javac *.java
再执行
java SingGame
SingGame.java
public class SingGame {
public static void main (String args[]) {
Line line=new Line();
line.givePersonScore();
}
}
InputScore.java
import java.util.Scanner;
public class InputScore {
DelScore del ;
InputScore(DelScore del) {
this.del = del;
}
public void inputScore() {
System.out.print("请输入评委数\n");
Scanner reader=new Scanner(System.in);
int count = reader.nextInt();
System.out.print("请输入各个评委的分数\n");
double []a= new double[count];
for(int i=0;i<count;i++) {
a[i]=reader.nextDouble();
}
del.doDelete(a);
}
}
DelScore.java
public class DelScore {
ComputerAver computer ;
DelScore(ComputerAver computer) {
this.computer = computer;
}
public void doDelete(double [] a) {
java.util.Arrays.sort(a); //数组a从大到小排序
System.out.print("去掉一个最高分:"+a[a.length-1]+",");
System.out.print("去掉一个最低分:"+a[0]+"。");
double b[] =new double[a.length-2];
for(int i=1;i<a.length-1;i++) { //去掉最高分和最低分
b[i-1] = a[i];
}
computer.giveAver(b);
}
}
ComputerAver.java
public class ComputerAver {
public void giveAver(double [] b) {
double sum=0;
for(int i = 0;i<b.length;i++) {
sum = sum+b[i];
}
double aver=sum/b.length;
System.out.println("选手最后得分"+aver);
}
}
ComputerAver.java显示小数点两位可改为
import java.text.*;
public class ComputerAver {
public void giveAver(double [] b) {
double sum=0;
for(int i = 0;i<b.length;i++) {
sum = sum+b[i];
}
double aver=sum/b.length;
System.out.print("选手最后得分");
String s=String.format("%.2f",aver);
System.out.print(s);
}
}
Line.java
public class Line {
InputScore one;
DelScore two;
ComputerAver three;
Line() {
three=new ComputerAver();
two=new DelScore(three);
one=new InputScore(two);
}
public void givePersonScore(){
one.inputScore();
}
}
运行结果
请输入评委数
5
请输入各个评委的分数
56
98
68
99
88
去掉一个最高分:99.0,去掉一个最低分:56.0。选手最后得分84.66666666666667
参考文献: Java实用教程