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

这样为什么不行?谢谢!

import java.util.Arrays;

public class Kevin {

public int[] order(int[] scores) {

Arrays.sort(scores);

int num = 0;

for(int i = (scores.length - 1); i>=0; i++) {

if(scores[i] > 100 || scores[i] < 0) {

continue;

}

num++;

if(num>3) {

break;

}

}

return scores;

}

public static void main(String []args) {

Kevin hbb = new Kevin();

System.out.println("考试成绩的前三名:");

int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73};

System.out.println(hbb.order(scores));

}

}



正在回答

1 回答

你的这段代码主要有三个问题:

1:for循环的条件不对for(int i = (scores.length - 1); i>=0; i++) 开始条件和终止条件都不对,开始条件,你的意思是i =  (scores.length - 1)也就是数组长度-1,从数组的最后一个开始,然后每一次判断 i++,然后判断 i>=0,明显这个判断条件必然成立,i++后会导致数组索引错误。所以for循环有问题。

改进:从第一个开始,最后一个结束

for(int i = 0; i<scores.length; i++)

2:你的for循环没有进行任何操作,仅仅是过了一个片场,没有对数组进行有用的操作,最后返回的数组是,你排好序的sorces,但是需要去除的分数,并没有去除

3:System.out.println(hbb.order(scores)) 这段代码,你在order函数的返回值是一个数组,但是你不能直接打印啊,如果你要打印也应该

int[] s = hbb.order(scores);
for (int i=0;i<3;i++)
{
   System.out.println(s[i]);
}

你这样直接打印,打印的是数组的内存地址


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

慕妹2448190 提问者

太感谢了!
2018-01-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这样为什么不行?谢谢!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信