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