代码验证对的,但是找运行不出结果

来源:7-1 编程练习

慕大侠

2015-08-08 16:06

老师好,没找出原因,哪里不对

import java.util.Arrays;


public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

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

   HelloWorld hello = new HelloWorld();

   hello.showTop3(scores);

}

    //定义方法完成成绩排序并输出前三名的功能

    public void showTop3(int[] scores)

    {

        Arrays.sort(scores);//使用Arrays.sort的方式实现数组排序

        int num = 0;

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

        {

            if(scores[i]<0||scores[i]>100)    // 判断成绩的有效性

            {

                continue; //如果成绩无效,则退出本次循环,忽略此成绩

            }

            num++;

            if(num>3)

            {

                break;

            }

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

        }

    }

}

运行结果:

考试成绩前三名:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at HelloWorld.showTop3(HelloWorld.java:19)
at HelloWorld.main(HelloWorld.java:10)

写回答 关注

1回答

  • 昨夜小楼泣东风
    2015-08-08 16:10:30
    已采纳

    (int i = scores.length;i>=0;i--)这里有问题。因为数组下标的取值范围是0到scores.length-1

    慕大侠

    哦哦,原来是这样,看来我理解的不够好,非常感谢您!

    2015-08-09 07:53:42

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165171 学习 · 17581 问题

查看课程

相似问题