j2se, 谁能告诉我有什么错啊,郁闷,求数组最大的值

程序运行说什么数组错误,当时能编译,不能输出。。。。。。。

class BB{

    int a[] = {1,4,22,3,2,0,55,11,10};
    int n = a.length;
    int erg = a[0];

    int f(){
        for (int i=0; i<=n; i++){
            if (a[i]>erg)
                erg = a[i];
            else continue;
        }
        return erg;
}

}

public class AA{

public static void main(String args[]){
BB p1 = new BB();
System.out.println(p1.f());
}
}

[code="java"]class BB{

int a[] = {1,4,22,3,2,0,55,11,10}; 
int n = a.length; 
int erg = a[0]; 

int f(){ 
for (int i=0; i<=n-1; i++){ //这里改成n-1或者i<n,数组下标不能操作8,因为长度为9,但是下标从0开始到8
if (a[i]>erg) 
erg = a[i]; 
else continue; 
} 
return erg; 
} 
} 


public class AA{ 
public static void main(String args[]){ 
BB p1 = new BB(); 
System.out.println(p1.f()); 
} 
} [/code]

把i<=n改成i<n

[code="java"]for (int i=0; i if (a[i]>erg)
erg = a[i]; [/code]

晕,速度够快地。。。。

数组的下标是从0开始,到n-1结束

就是你的for循环的问题
修改如下

for (int i=0; i<=[color=red]n-1[/color]; i++)

[code="java"]for (int i=0; i<n; i++)[/code]

[color=blue][b]你的循环基数有问题,应该是 从0到n-1 , 共 n 次[/b][/color]

[b]PS:数组的排序可以这样做:
[/b]
[code="java"]
class BB {

int a[] = { 1, 4, 22, 3, 2, 0, 55, 11, 10 };

int f() {
    Arrays.sort(a);
    return a[a.length-1];
}

}
[/code]

应该是数组下标越界吧?
写成这样应该就可以了:
for (int i=0; i<n; i++){
…………
}

以后看不懂出错信息,把那句英文复制了在baidu、google里一搜也应该有很多答案的。