所以到底哪错啦!大神快来拯救我

 

public class HelloWorld {
   
    //完成 main 方法
    public static void main(String[] args) {
       
        // 创建对象,对象名为hello
  HelloWorld hello = new HelloWorld();    
        // 调用方法并将返回值保存在变量中
        int maxScore=hello.getMaxAge();   
  // 输出最大年龄
  System.out.println("最大年龄为:" + maxScore);
 }

 /*
  * 功能:输出学生年龄的最大值
     * 定义一个无参的方法,返回值为年龄的最大值
     * 参考步骤:
     * 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17
     * 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值
     * 3、使用 for 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值
     * 4、使用 return 返回最大值
  */
 public int getMaxAge() {
        int [] ages ={18,23,21,19,25,29,17};
        int max=ages[0];
        for(int i=0;i<=ages.length;i++){
            if (max<=ages[i]){
                max=ages[i];
            }
        }
        return max;
            }
}

 

 

这是提示的错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at HelloWorld.getMaxAge(HelloWorld.java:27)
at HelloWorld.main(HelloWorld.java:9)

空候满庭花雨
浏览 1657回答 9
9回答

蜗牛快跑0

数组下标越界 

qq_灰太狼_27

数组越界异常

爱与恨

因为0,1,2,3,4,5,6,7是八个数,最后一次循环arg[7]是去取第八个数据,但是你的数组只有7个数据

K_clouds

你的代码没错,在文本中执行可以1

我埋藏的东西你别挖

for循环的 小于等于去掉等于 或者是小于等于length-1

慕虎6487783

数组越界:int [] ages ={18,23,21,19,25,29,17};数组长度为7;索引开始为0;所以这里for(int i=0;i<=ages.length;i++)多循环了一次共循环了八次,应改为for(int i=0;i<ages.length;i++)

平凡愿安静

for(int i=0;i<=ages.length-1;i++){            if (max<=ages[i]){                max=ages[i];            }

韬鸽

   for(int i=0;i<=ages.length;i++){            if (max<=ages[i]){                max=ages[i];            }        }数组越界了,应该是:for(int i=0;i<ages.length;i++)

仙人掌的吻

设计数据交换都要加一个中间变量,比如temp,    temp=a;  a=b; b=temp;就是a和b 的数据交换!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java