为了账号安全,请及时绑定邮箱和手机立即绑定

如何得出前三名成绩的呀?

http://img1.sycdn.imooc.com//56d7ac1b000187c405300301.jpg我还是不懂,从后往前遍历,当遍历到i=6,i=5,i=4位置时,scores[i]分别等于52,64,73,此时num=3,再继续遍历num=4,退出了循环,那输出的不是52,64,73了?是怎么得出91,89,73的呀??

正在回答

4 回答

Arrays.sort(scores)已经把数组排序了,就是 {-23, 52, 64, 73, 89, 91, 119},而for(int i=scores.length;i>=0;i--)这个相当于是吧已经排序好的数组倒序遍历也就是从{119,91,89,73,64,52,-23}这边开始数,所以输出的就是91,89,73

0 回复 有任何疑惑可以回复我~

public class HelloWorld {
import java.util.Arrays;
    //完成 main 方法
    public static void main(String[] args) {
        HelloWorld getGrades = new HelloWorld(); //创建对象getGrades
     int[] result = getGrades.exam(89,-23,64,91,119,52,73);//调用对象并传入参数
    }
   
    //定义方法完成成绩排序并输出前三名的功能
    public int[] exam(int a,int b,int c,int d,int e,int f,int g){//构造包含参数的exam方法
     int[] scores = {a,b,c,d,e,f,g};//创建数组
  Arrays.sort(scores); //对数组进行升序排序
  int effGra = 0; //定义并初始化有效成绩个数
  for (int i = scores.length-1;i >= 0;i--){ //倒序遍历数组
   if ((scores[i]<0)||(scores[i]>100)){ //如果成绩小于 0 或大于 100
    continue;       //则使用 continue忽略此成绩
   }
   effGra++; //有效成绩+1
   if (effGra > 3){ //如果有效成绩数大于 3
    break; //则结束循环
   }
   else{
    System.out.printf(scores[i]+"\t"); //只输出成绩的前三名
   }
  }
  return scores;
 }
}

0 回复 有任何疑惑可以回复我~

Arrays.sort()  让数列从小到大排列的,既int[] scores = {-23, 52, 64, 73, 89, 91, 119}   ,scores[scores.length-1]=119,不满足条件,结束本次循环,而num也没有变化,继续下次循环,当满足条件时候,num会加1,此时记录下array[i],就是第一个数字,

0 回复 有任何疑惑可以回复我~

Arrays.sort()  是让数组升序排列,所以int[] scores = {-23, 52, 64, 73, 89, 91, 119}   

虽然是从后往前遍历,但是数组的下标是从0-6来排的,所以scores[6]=119,scores[5]=91,依次类推。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如何得出前三名成绩的呀?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号