问答详情
源自:7-1 编程练习

搞不清出了什么问题,求大神

public class hallo {

public static void main(String[] args){

 int i,j,k;

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

 for(i=0;i<7;i++){

 for(j=0;j<7;j++){

 if(score[j]<score[j+1]){

 k=score[j];

 score[j+1]=score[j];

 score[j+1]=k;

  }

 }

  }for(i=0;i<3;i++)

System.out.println("score[i]");

  }

}

出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7怎么解决

提问者:Jharden 2016-01-30 23:41

个回答

  • 岛哥
    2016-01-31 00:17:07
    已采纳

    这个报错是说数组下表超出范围,以后记住这个关键词“ArrayIndexOutOfBounds”(数组索引超出界限)。

    那么问题在哪里呢?看了下你写这个程序目的是想比对score[j]<score[j+1]时,将数组值对调位置,实现排序目的。但是试想一下,数组数量是7个,下标是0到6,那你循环了7次,最后一次下标是6,就出现了score[6]<score[7],请问哪里有score[7]?

    for(i = 0; i < 7; i++){
       for(j = 0; j < 7; j++){

    将这里的7改成6就不会报错,但是这个程序来看是有问题的计算出来的结果并不数你想要的排序。

    在JAVA里有一个方法可以直接对数组排序,java.uitl.Arrays里面的sort()方法,你可以看看第6章6-7节的内容。


  • 11知足11
    2016-01-31 11:18:51

    import java.util.Arrays;
    public class HelloWorld {
        
        //完成 main 方法
        public static void main(String[] args) {
           int scores[]={89,-23,64,91,119,52,73}; 
            HelloWorld hello=new HelloWorld();
            hello.forword(scores);
            
        }
        //定义方法完成成绩排序并输出前三名的功能
        public void forword(int[] scores){
        	int count=0;
            Arrays.sort(scores);
            System.out.println("考试成绩的前三名为:");
            for (int i =scores.length-1; i>=0; i--) {
    			if(scores[i]>0){
    				count++;
    				System.out.println(scores[i]);
    				if(count>2)
    					break;
    			}
    		}
        }
    }