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

第一季8-1练习题,在方法中,我想先用for循环先把有效成绩弄出来,然后输出最高的三个成绩,可是为什么我的有效成绩里还有119,而且出现了两个91?请教大神,谢谢

package packageimooc1;
//导入java.util包中的Arrays类
import java.util.Arrays;
public class Helloworld {
 public static void main(String[] args){
   //传入数组
        int scores[]={89,-23,64,91,119,52,73};
  // 创建对象,对象名为hello
        Helloworld hello = new Helloworld();
        //调用方法,并传入实参
        hello.topthree(scores);
    }
    //定义方法完成成绩排序并输出前三名的功能
    public void topthree(int scores[]){
     //排序
     Arrays.sort(scores);
        //判断数组的有效性
     int j=0;
       for(int i=0;i<scores.length;i++){
            if((scores[i]>0)&&(scores[i]<100)){
             scores[j]=scores[i];j++;
             }
            else continue;
        }
       
        System.out.println(Arrays.toString(scores));
 }
}

正在回答

2 回答

因为你第一次排序后91和119排到了最后
-23, 52, 64, 73, 89, 91, 119
第二次进行赋值只是改变了在原来数组上前面5个数 并不影响后面两个数的存在

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

你的数组是这个int scores[]={89,-23,64,91,119,52,73};
但是你那样进行的话,就是把无效的成绩的位置用下一个来顶替;
比如你的scores[1]=-23  判断后跳过了,接下来,scores[1]=64;
这是可以的,虽然到最后你消去了2个数字,但是数组的长度不变,所以最后两个数字你是没有发生改变的;
(以上基于没sort后的)

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

举报

0/150
提交
取消

第一季8-1练习题,在方法中,我想先用for循环先把有效成绩弄出来,然后输出最高的三个成绩,可是为什么我的有效成绩里还有119,而且出现了两个91?请教大神,谢谢

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

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

帮助反馈 APP下载

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

公众号

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