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

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

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怎么解决

正在回答

2 回答

这个报错是说数组下表超出范围,以后记住这个关键词“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节的内容。


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

Jharden 提问者

非常感谢!
2016-02-28 回复 有任何疑惑可以回复我~
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;
			}
		}
    }
}


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

举报

0/150
提交
取消

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

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