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

关于数组越界的问题

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://img1.sycdn.imooc.com//56f154570001daf006340148.jpg


正在回答

2 回答

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

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

VivianLee 提问者

嗦嘎,谢谢你!
2016-03-28 回复 有任何疑惑可以回复我~

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

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

VivianLee 提问者

为什么我的i不能从score.length开始呢
2016-03-23 回复 有任何疑惑可以回复我~
#2

xixiyingyi 回复 VivianLee 提问者

因为第一个数组的下标是从0开始的,如果你访问score.length的话,会超出了数组的长度。从1到score.length的长度是score.length,但是数组从0开始,访问score.length的话,相当于访问了第score.length+1,所以会出现访问数组越界Exception
2016-03-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于数组越界的问题

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