数组越界,不知道该怎么解决,求哪位大神告知?

数组越界,不知道该怎么解决,求哪位大神告知?

问题描述:

package Mytest;

public class Ages {
public static void main(String[] args) {
Ages hello=new Ages();
int maxscore = hello.getMaxAge();
System.out.println("最大年齡是:"+maxscore);
}
public int getMaxAge() {
int[] ages = {18, 23, 21, 19, 25, 29, 17};
int MaxAge = ages[0];
for (int tmp:ages) {
if(MaxAge<ages[tmp]) {
MaxAge=ages[tmp];
}
}
return MaxAge;

}

}

方法一:
public static void main(String[] args) {
Ages hello = new Ages();
int maxscore = hello.getMaxAge();
System.out.println("最大年齡是:" + maxscore);
}
public int getMaxAge() {
int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
int MaxAge = ages[0];
for (int tmp : ages) {
if (MaxAge < tmp) {
MaxAge = tmp;
}
}
return MaxAge;
}

方法二:
public static void main(String[] args) {
    Ages hello = new Ages();
    int maxscore = hello.getMaxAge();
    System.out.println("最大年齡是:" + maxscore);
}
public int getMaxAge() {
int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
int MaxAge = ages[0];
for (int tmp = 0; tmp < ages.length; tmp++) {
    if (MaxAge < ages[tmp]) {
        MaxAge = ages[tmp];
    }
}
return MaxAge;

}

这里你搞错了一个问题,tmp代表的是数组内容,不是下标,可以这样改一下:

 public int getMaxAge() {
        int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
        int MaxAge = ages[0];
        for (int tmp : ages) {
            if (MaxAge < tmp) {
                MaxAge = tmp;
            }
        }
        return MaxAge;

    }

当然也可以用下标的方式:

 public int getMaxAge() {
        int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
        int MaxAge = ages[0];
        for (int i=0;i<ages.length;i++) {
            if (MaxAge < ages[i]) {
                MaxAge = ages[i];
            }
        }
        return MaxAge;

    }

方法一:
public static void main(String[] args) {
Ages hello = new Ages();
int maxscore = hello.getMaxAge();
System.out.println("最大年齡是:" + maxscore);
}
public int getMaxAge() {
int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
int MaxAge = ages[0];
for (int tmp : ages) {
if (MaxAge < tmp) {
MaxAge = tmp;
}
}
return MaxAge;
}

方法二:
public static void main(String[] args) {
Ages hello = new Ages();
int maxscore = hello.getMaxAge();
System.out.println("最大年齡是:" + maxscore);
}
public int getMaxAge() {
int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
int MaxAge = ages[0];
for (int tmp = 0; tmp < ages.length; tmp++) {
if (MaxAge < ages[tmp]) {
MaxAge = ages[tmp];
}
}
return MaxAge;
}

public class Test2 {
public static void main(String[] args) {
Test2 hello = new Test2();
int maxscore = hello.getMaxAge();
System.out.println("最大年齡是:" + maxscore);
}

public int getMaxAge() {
    int[] ages = { 18, 23, 21, 19, 25, 29, 17 };
    // 假设数组的第一个数为最大值(是假设)
    int MaxAge = ages[0];
    for (int i = 1; i < ages.length; i++) {
        // 如果在数组中还有比我们设的最大值还要大的数,说明我们设的最大数根本不是数组的最大值
        if (MaxAge < ages[i]) {
            // 把就数组中比设的最大值还大的数相应的数赋给最大值,循环走完,得到的就是最大值
            MaxAge = ages[i];
        }
    }
    return MaxAge;
}

}