大家帮我看看 为什么编译过了 运行的时候会报错呢

leo__programmer 2018-03-08 11:20:15
/**
*调用无参带返回值的方法
*
*
*/

public class HelloWorld{
public static void main(String[]args){
HelloWorld hello = new HelloWorld();
//调用getMaxAge方法
int maxAge = hello.getMaxAge();
System.out.println("年龄最大的是:" + maxAge);
}
//创建getMaxAge方法 得到ages[]年龄最大的
public int getMaxAge(){
int []ages = {18,23,21,19,25,29,17};
int maxAge = ages[1];
for(int i=0;i<=ages.length;i++){
if(maxAge <ages[i]){
maxAge = ages[i];
}

}
return maxAge;
}
}
...全文
392 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maren_LIAN 2018-03-08
  • 打赏
  • 举报
回复
问题是数组下标越界啦!ages.length是数组的长度,小标数从零开始的。细节问题,一定注意 for(int i=0;i<ages.length;i++){}
lzdigicom 2018-03-08
  • 打赏
  • 举报
回复
数组下标越界! for(int i=0;i<=ages.length-1;i++)
初尘19 2018-03-08
  • 打赏
  • 举报
回复
原因是数组访问越界,数组实际长度是ages.length,你访问了数组中第ages.length+1个元素,所以会出错
Miracle1216 2018-03-08
  • 打赏
  • 举报
回复
for(int i=0;i<=ages.length;i++){ <=改成< 数组下标从0到ages.length -1
smnzg 2018-03-08
  • 打赏
  • 举报
回复
数组下标从0开始
liuPeng_0930 2018-03-08
  • 打赏
  • 举报
回复
循环条件修改成 (int i=0;i<ages.length;i++) 或者 (int i=0;i<=ages.length-1;i++) 因为下标值比长度小1

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧