案例:
评委打分。
需求:
在唱歌比赛中,有 6 名评委给选手打分,分数范围是【0 - 100】之间的整数。选手的最后得分为:去掉最高分、最低分后的 4 个评委的平均分,请完成上述过程并计算出选手的得分。
代码一:
//评委打分:
//代码一:
package demo01;
import java.util.Scanner;
public class HelloJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入 6 位评委打的分数(【0 - 100】之间的整数):");
//定义一个数组用于存放 6 位评委打的分数:
int[] array = new int[6];
for(int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
//判断输入的分数是否在【0 - 100】之间:
if(array[i] > 100 || array[i] < 0) {
System.out.println("输入的分数不合法,此次算出的选手平均分不准确!");
break;
}
}
sc.close();
//找出 6 位评委的最高分:
int max = array[0];
for(int i = 0; i < array.length; i++) {
if(array[i] > max) {
max = array[i];
}
}
//找出 6 位评委的最低分:
int min = array[0];
for(int i = 0; i < array.length; i++) {
if(array[i] < min) {
min = array[i];
}
}
//求出选手最终得分:
int sum = 0;
for(int i = 0; i < array.length; i++) {
sum += array[i];
}
sum = sum - max - min;
double average = sum / 4;
System.out.println("选手的得分为:" + average);
}
}
运行结果一:
代码一能够实现题目要求,但是如果我一旦分数输入错误,就只能全部重新输入,如果评委很多,那么工作量将变大,以下提供一种即使输入错误也不需要全部重新输入,只需要继续输入未输入的分数即可的方法:
代码二:
//评委打分:
代码二:
package demo01;
import java.util.Scanner;
public class HelloJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入 6 位评委打的分数(【0 - 100】之间的整数):");
//定义一个数组用于存放 6 位评委打的分数:
int[] array = new int[6];
for(int i = 0; i < array.length; ) {
int score = sc.nextInt();
if(score >= 0 && score <= 100) {
array[i] = score;
i++;
}else {
System.out.println("输入的分数不合法,请继续输入,当前 i 的值为:" + i );
}
}
sc.close();
//找出 6 位评委的最高分:
int max = array[0];
for(int i = 0; i < array.length; i++) {
if(array[i] > max) {
max = array[i];
}
}
//找出 6 位评委的最低分:
int min = array[0];
for(int i = 0; i < array.length; i++) {
if(array[i] < min) {
min = array[i];
}
}
//求出选手最终得分:
int sum = 0;
for(int i = 0; i < array.length; i++) {
sum += array[i];
}
sum = sum - max - min;
double average = sum / 4;
System.out.println("选手的得分为:" + average);
}
}
运行结果二: