public class UseStudent { String Sname;
int SNo;
int age; UseStudent(String Sna, int Sno,int ag) {
Sname = Sna;
SNo = Sno;
age = ag;
} public static void main(String args[]) { int i,j; UseStudent[] myarray =new UseStudent[3];
for(i=0;i<=myarray.length;i++){
myarray[i]=new UseStudent("s", 12+i, 12);  
System.out.println(myarray[i]);
}
}
}
代码没错,运行时却抛出异常,有什么好的解决方法,运行结果如下所示:
UseStudent@de6ced
UseStudent@c17164
UseStudent@1fb8ee3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at UseStudent.main(UseStudent.java:19)

解决方案 »

  1.   

    代码有错
    for(i=0;i<=myarray.length;i++)
    你的i的取值会是0 1 2 3,而数组下标是0 1 2。这样就越界了。
      

  2.   

    public class UseStudent {    String Sname;
        int SNo;
        int age;    UseStudent(String Sna, int Sno,int ag) {
            Sname = Sna;
            SNo = Sno;
            age = ag;
        }    public static void main(String args[]) {        int i,j;        UseStudent[] myarray =new UseStudent[3];
            for(i=0;i<myarray.length;i++){
                myarray[i]=new UseStudent("s", 12+i, 12);     
                System.out.println(myarray[i]);
            }
        }
    }
      

  3.   

    现在改了,呵呵,是个低级错误。
    不过上面三行的还是没变
    UseStudent@de6ced
    UseStudent@c17164
    UseStudent@1fb8ee3
    怎么使它能正确显示出来?
      

  4.   

    重写UseStudent的toString方法,返回你需要的该类的信息。
      

  5.   

    public class UseStudent {    String Sname;
        int SNo;
        int age;    UseStudent(String Sna, int Sno,int ag) {
            Sname = Sna;
            SNo = Sno;
            age = ag;
        }    public String toString() {
         return "Sname:"+this.Sname+" SNo:"+this.SNo+" age:" + this.age;
        }    public static void main(String args[]) {        int i,j;        UseStudent[] myarray =new UseStudent[3];
            for(i=0;i<myarray.length;i++){
                myarray[i]=new UseStudent("s", 12+i, 12);     
                System.out.println(myarray[i]);
            }
        }
    }
      

  6.   

    ...
    那我就具体点...
    在你的类里加这样一个方法 @Override
    public String toString() {
    return String.format("Sname=%s,SNo=%d,age=%d", Sname,SNo,age);
    }
      

  7.   

    因为你数组中存放的是自定义对象,这样打印出来就是对象的地址,如果想打印对象的值,可以在对象所在的类中重载toString方法返回对象的值,这样打印对象时就会调用toString方法返回对象的值:
    public String toString() 
    {
    return "Sname:" + this.Sname + " SNo:" + this.SNo + " age:" + this.age;
    }