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

找不到哪错了,求大神指教!


import java.util.Arrays;

public class HelloWorld {

    public static void main(String[] args) {
                int scores[]=new int[]{89,-23,64,91,119,52,73};
                HelloWorld Hello=new HelloWorld();
                System.out.println("前三名成绩是:");
                Hello.rangKing(scores);
             
            }
            
            //定义方法完成成绩排序并输出前三名的功能
            public void rangKing(int scores[]){
                Arrays.sort(scores);
                for(int i=scores.length;i>=0;i--){
                    int num=0;
                    if(scores[i]<0||scores[i]>100)
                        continue;
                    num++;
                    if(num<=3){
                    System.out.println(scores[i]);
                    }
                }
                
                }
            }
   

正在回答

5 回答

i=scores.length-1,如果是=scores.length的话,会报数组越界的吧

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

夏木啊 提问者

非常感谢!
2016-08-10 回复 有任何疑惑可以回复我~

    public void rangKing(int scores[]){

                Arrays.sort(scores);

                 int num=0;

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

                   

                    if(scores[i]>0&&scores[i]<100)

                    {num++;

                    System.out.println(scores[i]);

                    }

                    if(num==3)break;

                   

                }

                }


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

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

这句错了,i=scores.length越界了,应该改成i=scores.length-1

0 回复 有任何疑惑可以回复我~
1.for(int i=scores.length;i>=0;i--){
    scores.length应该改为scores.length-1;此数组中没有第7位元素,只有0,1,2,3,4,5,6;
2.int num=0;
    num的定义要移到for循环外;
3.  if(num<=3){
       System.out.println(scores[i]);
    }
    1)应该是num>3。这是一个判断,取三个成绩就跳出循环,不再执行,因此
    2)if语句的语句块应该是break,跳出循环
    3)System.out.println(scores[i]);这个输出语句要移到if语句外,但要在for循环中

正确代码:
package day02;

import java.util.Arrays;

public class Test06 {

	public static void main(String[] args) {
		int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73};
		Test06 t = new Test06();
		t.showTop3(scores);
	}
	public void showTop3(int[] scores){
		Arrays.sort(scores);
		int num = 0;
		for(int i = scores.length-1;i>=0;i--){
			
			if(scores[i]<0||scores[i]>100){
				continue;
			}
			num++;
			if(num>3){
				break;
			}
			System.out.println(scores[i]);
		}
	}
}


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

...大胸弟,if(num<=3)...这不是循环语句。,

  1. 一般不确定循环次数的用while

  2. 确定循环次数的用for ,switch

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

举报

0/150
提交
取消

找不到哪错了,求大神指教!

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