为什么显示超出范围

来源:7-1 编程练习

ViaryKim

2016-05-22 00:00

import java.util.*;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

      HelloWorld line = new HelloWorld();

      line.sort(scores);

    }

    

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

    public void sort(int[]scores){

    //选出有效成绩

    int i,j; 

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

    {

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

        {

            scores[j]=scores[i];

            j++;

        }

    }

    //有效成绩排序

    Arrays.sort(scores);

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

    //选出前三名

    for(int k=scores.length-1;k>scores.length-4;k--)

    {

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

    }

    }

    




运行显示问题:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7

at ad.HelloWorld.sort(HelloWorld.java:18)

at ad.HelloWorld.main(HelloWorld.java:9)


写回答 关注

3回答

  • 佛曰_守口如瓶
    2016-06-02 00:16:56

    根据数学上证明一个结论不能在证明时使用这个结论,类比到编程,认为:在定义sort(int[] scores)时,应该不能调用sort(scores)便把你的sort(int[] scores)方法改成了2个,就能输出结果。不知道原因是不是这个,是这么想的,就做了相应的修改。

    import java.util.Arrays;

    public class HelloWorld {

        

        //完成 main 方法

        public static void main(String[] args) {

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

          HelloWorld line = new HelloWorld();

          line.sort1(scores);

        }

        

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

        public void sort(int[]scores){

        //选出有效成绩

        int i,j; 

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

        {

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

            {

                scores[j]=scores[i];

                j++;

            }

        }

        }

        public void sort1(int[] scores){

        //有效成绩排序

        Arrays.sort(scores);

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

        //选出前三名

        for(int k=scores.length-1;k>scores.length-4;k--)

        {

            System.out.print(scores[k]+" ");

        }

        }

    }


    考试前三名为:

    119 91 89 


  • 慕粉3345055
    2016-05-22 12:46:45

    public void sort(int[] scores){

            int count=0;

            Arryas.sort(scores);

            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;

    }

    }

            }

        }

    这样可以输出前三名!你的情况我也出现过,不过我也不知道为什么

  • qq_三叉_03307928
    2016-05-22 01:23:56

    我把输出考试前三那行的println换成print了显示下面这些

    /85/1598/DsXg/HelloWorld.java:35: error: reached end of file while parsing
       }
        ^
    1 error

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

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

1165172 学习 · 17581 问题

查看课程

相似问题