java————这个程序那里出错?
)在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某...
)在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。
public static void main(String[] args) {
double a[]=new double[3];
Scanner in = new Scanner(System.in);
double max=a[0];
double min=a[0];
double total=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
total+=a[i];
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
System.out.println("该选手的分为:"+(total-(max+min))/i+1);
}
}
}
//为什么答案不正确?
double a[]=new double[10];
修改下,可是还是错!! 展开
public static void main(String[] args) {
double a[]=new double[3];
Scanner in = new Scanner(System.in);
double max=a[0];
double min=a[0];
double total=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
total+=a[i];
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
System.out.println("该选手的分为:"+(total-(max+min))/i+1);
}
}
}
//为什么答案不正确?
double a[]=new double[10];
修改下,可是还是错!! 展开
4个回答
展开全部
你应该对数组的值进行冒泡排序,算平均分的时候去掉下标为0,和length-1这两个下标的值:
public static void main(String[] args) {
double a[]=new double[10];
Scanner in = new Scanner(System.in);
double temp=0; //冒泡排序临时变量
double total=0;
/**8个裁判的给分总和,
因为10个裁判去掉一个最低分和一个最高分,
所以有效分之和只能算成8个裁判的给分*/
double sum=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
}
//将这10个成绩冒泡排序
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length - i -1; j++) {
if (a[j]>a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//对这10个分数求和
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
//所得分数减去最低分和最高分
sum = sum - a[0] - a[a.length-1];
System.out.println("该选手的分为:"+(sum/8));
}
public static void main(String[] args) {
double a[]=new double[10];
Scanner in = new Scanner(System.in);
double temp=0; //冒泡排序临时变量
double total=0;
/**8个裁判的给分总和,
因为10个裁判去掉一个最低分和一个最高分,
所以有效分之和只能算成8个裁判的给分*/
double sum=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
}
//将这10个成绩冒泡排序
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length - i -1; j++) {
if (a[j]>a[j+1]) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//对这10个分数求和
for (int i = 0; i < a.length; i++) {
sum+=a[i];
}
//所得分数减去最低分和最高分
sum = sum - a[0] - a[a.length-1];
System.out.println("该选手的分为:"+(sum/8));
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
正确代码如下
public static void main(String[] args) {
double a[]=new double[10];
Scanner in = new Scanner(System.in);
int maxIndex = 0;
int minIndex = 0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
if(a[i]>a[maxIndex])
maxIndex = i;
if(a[i]<a[minIndex])
minIndex = i;
}
in.close();
int sum =0;
for(int i=0;i<a.length;i++){
if(maxIndex==i||minIndex==i){
continue;
}
sum+=a[i];
}
System.out.println(sum/8f);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是我修改的程序:
public static void main(String[] args) {
double a[]=new double[10];
Scanner in = new Scanner(System.in);
double max=0;
double min=0;
double total=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
if(i==0)//这一步是关键
{
min=a[0];
max=a[0];
}
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
total+=a[i];
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
}
System.out.println("该选手的分为:"+(total-(max+min))/8);
}
public static void main(String[] args) {
double a[]=new double[10];
Scanner in = new Scanner(System.in);
double max=0;
double min=0;
double total=0;
System.out.println("输入10个人的成绩");
for(int i=0;i<a.length;i++){
a[i]=in.nextDouble();
if(i==0)//这一步是关键
{
min=a[0];
max=a[0];
}
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
total+=a[i];
System.out.println("第"+(i+1)+"个裁判给分为"+a[i]+" ");
}
System.out.println("该选手的分为:"+(total-(max+min))/8);
}
追问
怎么你是对的,我感觉我的和你差不多,而且为什么要加这一步?
if(i==0)//这一步是关键
{
min=a[0];
max=a[0];
}
追答
起初min赋值时,min=a[0];
这个时候,a[0]==0,也即是 min==0,
然后你再输入a[0]-a[9]的值,因为输入的值都>0,所以,min永远是0,这当然不是我们期待的值,所以我说那一步是关键——min要重新赋值,max倒可以不用再赋值。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void main(String[] args) {
double a[] = new double[10];
Scanner in = new Scanner(System.in);
double total = 0;
System.out.println("输入10个人的成绩");
for (int i = 0; i < a.length; i++) {
a[i] = in.nextDouble();
total += a[i];
System.out.println("第" + (i + 1) + "个裁判给分为" + a[i] + " ");
}
Arrays.sort(a);
System.out.println("该选手的分为:" + ((total - (a[0] + a[a.length - 1])) / 8));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询