要求:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后将剩余的8位评委的分数进行平均,即是该选手的最终得分

直接上代码

public static void main(String[] args) {
  int scores[]=new int[10] ;//定义数组存放打分的分数
  int min=0;
  int max=0;
  int sum=0;
  double average=0;
  for(int i=0;i<=9;i++) {
    Scanner in =new Scanner(System.in);
    int x=i+1;
    System.out.println("请输入第"+x+"个评委所打的分数:");//依次输入评委所打分数
    int a=in.nextInt();//输入一个整数 
    scores[i]=a;//将输入的整数存进数组中
  }
  int minscores=0;
  int maxscores=0;//初始化最高分与最低分
  for(int i=0;i<=9;i++) {
   if (scores[i]<=minscores) {
    minscores=scores[i];//获得最低分
    min=i;//确定最低分在数组中的位置
   }
   if (scores[i]>=maxscores) {
    maxscores=scores[i];//获得最高分
    max=i;//确定最高分在数组中的位置
   }
  }
  int[] copy=new int[8];//要删除数组中元素,要重新定义一个数组将新数组元素放进去
  int j =0;//计数器
  for (int i=0;i<=9;i++) {  //在放进数组元素时,跳过最高分与最低分即为删除元素
   if(i==min||i==max) {
    i=i+1;
   }
   if(i<=8) {  //复制数组其他元素
    copy[j]=scores[i];
   }
   j++;
  }
  for(int i=0;i<=7;i++) {
   sum=copy[i]+sum; //求分数和
  }
  System.out.println("去掉最高分和最低分后:");
  for(int i=0;i<=7;i++) {
   System.out.print(copy[i]+",");//打印出去掉最高分与最低分后的成绩
  }
  average=sum/8;
  System.out.println("这位选手成绩为"+average);
 }

这段代码是为了检查之前去掉最高分与最低分是否出现错误而加上的

System.out.println("去掉最高分和最低分后:");
  for(int i=0;i<=7;i++) {
   System.out.print(copy[i]+",");
  }

第一次编写所遇到的问题:

需要用户输入时要在开头加上:

import java.util.*;

以及声明:

Scanner in =new Scanner(System.in);

变量需要初始化,不初始化变量会报错
在for循环中要先 int i 并且在循环中用i作为数组序列时要注意数组长度
错误代码

for(int i=1;i<=10;i++) {
    Scanner in =new Scanner(System.in);
    int x=i+1;
    System.out.println("请输入第"+x+"个评委所打的分数:");//依次输入评委所打分数
    int a=in.nextInt();//输入一个整数 
    scores[i]=a;
  }

print与println区别:是否换行;

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值