Java基础知识:
由6位评委依次给出0~100的分数,去掉最高分,去掉最低分,求剩下的平均数:
package com.iiid.test;
import java.util.Scanner;
public class Test {
// 评委打分系统,由6位评委依次给出0~100的分数,去掉最高分,去掉最低分,求剩下的平均数
public static void main(String[] args) {
// 将getScores方法得到的返回结果给新数组scoreArr
int[] scoreArr = getScores();
/*// 可以用遍历得到结果
for (int uu:scoreArr
) {
System.out.print(uu + "\t");
}*/
// 数组的最大值
int max = getMax(scoreArr);
// 数组的最小值
int min = getMin(scoreArr);
// 数组的和
int sum = getSum(scoreArr);
// 去掉一个最高分,去掉最低分,求平均值
int avg = (sum - max - min) / (scoreArr.length - 2);
System.out.println("总得分是:" + sum + ",去掉一个最高分:" + max + ",去掉一个最低分:" + min);
System.err.println("选手的最终得分是:" + avg);
}
// 定义一个数组,手动录入6位评委的打分
public static int[] getScores(){
// 定义新数组,设置数组长度为6
int[] scores = new int[6];
// 键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入6位评委的打分,并按回车进行下一步:");
// 嵌套for循环,使操作人可以一直录入,直到录完为止
for (int i = 0; i < scores.length; ) {
// 将每次录入的数据存入score中,再将score赋值给数组scores
int score = sc.nextInt();
// 如果录入的数值小于等于100或者大于等于0,则录入的成绩应该是有效的
if (score <= 100 && score >= 0){
// 有效
scores[i] = score;
i++;
} else {
// 无效
System.err.println(i + 1 + "您录入的这次成绩不合法,请按规定重新录入");
}
}
return scores;
}
// 定义一个方法,求新数组的最大值
public static int getMax(int[] scoreArr){
// 先假设最大值就是数组当中的索引0
int max = scoreArr[0];
// 遍历数组
for (int j : scoreArr) {
// 如果遍历的结果里有任何数大于我初始定义的max,则将该结果存入max中,进行下一次循环
if (j > max) {
max = j;
}
}
return max;
}
// 定义一个方法,求新数组中的最小值
public static int getMin(int[] scoreArr){
// 同求最大值的理,先假设最小值也是索引0
int min = scoreArr[0];
for (int j : scoreArr) {
if (j < min) {
min = j;
}
}
return min;
}
// 将新数组的结果相加
public static int getSum(int[] scoreArr){
// 定义一个数的初始值为0,然后遍历数组,依次相加,第一次数组第一位加0,第二次数组第二位加第一位....
int sum = 0;
for (int j : scoreArr) {
sum = sum + j;
}
return sum;
}
}