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

求大神解释下,为什么错了????

求大神解释下,为什么错了????

孟应杰 2016-10-16 02:18:21
public class m8_1 { public static void main (String[] args) {  System.out.println("前三名的成绩依次是:");  int scores []  ={89,-23,64,91,119,52,73};  m8_1 hello =new m8_1();  hello.mY(scores); } public void mY (int scores[]){  Arrays.sort(scores);  int count = 1;  for(int i=scores.length; i>=0 ; i--){   if(scores[i] > 0&&scores[i] < 100){    System.out.println(scores[i]);    count++;    if(count==3){    break;     }    else{     continue;    }   }   else{    continue;   }     } }}
查看完整描述

3 回答

?
慕粉4065503

TA贡献3条经验 获得超1个赞

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

i的值不能等于数组的长度的 ,数组的长度是从0开始的。举个列子长度为2的scores[]数组只有scores[0],scores[1]这两个,你让i=2,系统会报错,所以这句改成for(int i=scores.length-1; i>=0 ; i--){}

还有个错误是count这变量是控制for循环的次数的 你要输出3次就要让count自加3次,在你的程序中只有2次,可以将count初始值改为0,或者将if中条件count==0改为count>3.


查看完整回答
反对 回复 2016-10-18
?
望远

TA贡献1017条经验 获得超1032个赞

 数组下标越界了

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

}

应该是从i=scores.length-1开始

还有一个错误就是应该将count的值赋初值0,才符合逻辑

查看完整回答
反对 回复 2016-10-16
  • 3 回答
  • 0 关注
  • 1115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信