关于数组越界的问题

来源:7-1 编程练习

VivianLee

2016-03-22 22:19

package com.test3;
/*
 * 
 * 功能:输出保存在数组中的前三名
 */
import java.util.Arrays;
public class test8 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int []scores = { 89 , -23 , 64 , 91 , 119 , 52 , 73};
        test8 sys = new test8();
        sys.getScore(scores);
	}
	public int[] getScore(int score[]){
		Arrays.sort(score);
		int count = 0;
		for(int i=score.length;i>=0;i--){
			if((score[i]>100)||(score[i]<0)){
				continue;
			}
			count++;
			if(count>3){
				break;
			}
			System.out.println("考试成绩的前三名为:");
			System.out.println(score[i]);
		}
		return score;
	}

}

我想要输出保存在数组中的前三名的成绩,可是eclipse提示数组越界呢,这是为什么呢?

这是运行结果:

http://img.mukewang.com/56f154570001daf006340148.jpg


写回答 关注

2回答

  • xixiyingyi
    2016-03-27 20:29:02
    已采纳

    因为第一个数组的下标是从0开始的,如果你访问score.length的话,会超出了数组的长度。从1到score.length的长度是score.length,但是数组从0开始,访问score.length的话,相当于访问了第score.length+1,所以会出现访问数组越界Exception

    Vivian...

    嗦嘎,谢谢你!

    2016-03-28 19:52:54

    共 1 条回复 >

  • 大鹏展翅_0002
    2016-03-23 10:30:00

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

    xixiyi... 回复Vivian...

    因为第一个数组的下标是从0开始的,如果你访问score.length的话,会超出了数组的长度。从1到score.length的长度是score.length,但是数组从0开始,访问score.length的话,相当于访问了第score.length+1,所以会出现访问数组越界Exception

    2016-03-27 20:25:11

    共 2 条回复 >

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

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

1165574 学习 · 17587 问题

查看课程

相似问题