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)
for(i=0;i<=myarray.length;i++)
你的i的取值会是0 1 2 3,而数组下标是0 1 2。这样就越界了。
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
怎么使它能正确显示出来?
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]);
}
}
}
那我就具体点...
在你的类里加这样一个方法 @Override
public String toString() {
return String.format("Sname=%s,SNo=%d,age=%d", Sname,SNo,age);
}
public String toString()
{
return "Sname:" + this.Sname + " SNo:" + this.SNo + " age:" + this.age;
}