@TOC在这里插入代码片
java接口实验(一)
初学java,近期的课程实验要求做一个求平均值的接口,声明类调用接口实现全部数值相加求平均值以及去掉极值求平均值两个功能。网上关于接口的java代码似乎很少,没有找到有参考价值的,就自己写了个。
声明的接口Average:
interface Average {
double sumAverage(double[] var1, int var2);//直接求和计算平均值
double triMmenAverage(double[] var1, int var2);//去掉极值后计算平均值
}
下面是调用的接口的类:
/*
*author:Hermod
*Time:20190924
*Compiling environment:IDEA
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Intact implements Average {
protected Average average;
protected double[] a;
protected static int L;
protected Intact(double[] s) {
this.a = s;
}
public double sumAverage(double[] s, int n) {
double m = 0.0D;
for(int i = 0; i < n; ++i) {
m += s[i];
}
m /= (double)n;
System.out.println("平均分为:" + m);
return 0.0D;
}
public double triMmenAverage(double[] s, int n) {
double m = 0.0D;
int count = n;
int i = 0;
ArrayList objArrays = new ArrayList();
if (s[n - 1] == s[n - 2]) {
objArrays.remove(n - 1);
count = n - 1;
}
objArrays.remove(count - 1);
--count;
if (s[i] == s[i + 1]) {
objArrays.remove(i);
--count;
}
objArrays.remove(i);
--count;
for(int j = 0; j < count; ++j) {
m += s[j];
}
m /= (double)n;
System.out.println("去掉极值后平均分为:" + m);
return 0.0D;
}
protected double[] order(double[] a) {
Arrays.sort(a);
return a;
}
protected void StartScreen() {
Scanner sc = new Scanner(System.in);
System.out.println("请选择裁判打分所用的分制");//皮一下很开心
System.out.println("*****1十分制*****");
System.out.println("*****2百分制*****");
System.out.println("其实两个选项的算法没有任何区别!");
int choice = sc.nextInt();
switch(choice) {
case 1:
System.out.println("您选择的是十分制");
break;
case 2:
System.out.println("您选择的是百分制");
break;
default:
System.out.println("本程序作者太垃圾,编不出来抛出错误,求求您别试了!");
}
}
public void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
this.StartScreen();
System.out.println("请输入打分表,分数之间以空格号分隔:");
for(int i = 0; i < n; ++i) {
this.a[i] = sc.nextDouble();//发生异常处
}
Intact scores = new Intact(this.a);
L = this.a.length;
scores.sumAverage(this.a, L);
scores.triMmenAverage(this.a, L);
}
}
`