问题显示Index 3 out of bounds for length 3,13行和39行出的问题,我没看出来问题在哪,有没有帅哥美女帮忙看看(不知道为什么,不能用chuxue这两个字……)
public static void main(String[] args) {
//创建数组储存学生对象
Student[] arr=new Student[3];
//创建学生对象
Student stu1=new Student(1,"张三",23);
Student stu2=new Student(2,"李四",24);
Student stu3=new Student(3,"王五",25);
//将学生对象添加到数组中
arr[0]=stu1;
arr[1]=stu2;
arr[2]=stu3;
//要求1:再添加一个学生对象,并在添加的时候进行学号唯一性判断
Student stu4=new Student(4,"赵六",26);
//进行判断
if(contains(arr,stu4.getId())) {
//已存在,不用添加
System.out.println("当前id已重复,请修改id后再进行添加...");
}else {
//不存在,将stu4加入数组中...
int count=getCount(arr);
if(count==arr.length) {
//已经存满
Student[] newArr=createNewArr(arr);
newArr[count]=stu4;
printArr(newArr);
}else {
//没有存满
arr[count]=stu4;
printArr(arr);
}
}
}
//添加完后,遍历所有的学生信息
public static void printArr(Student[] arr) {
for(int i=0;i<arr.length;i++) {
Student stu=arr[i];
if(stu!=null) {
System.out.println(stu.getId()+", "+stu.getName()+", "+stu.getAge());
}
}
}
//创建一个新数组
public static Student[] createNewArr(Student[] arr) {
Student[] newArr=new Student[arr.length+1];
for(int i=0;i<newArr.length;i++) {
newArr[i]=arr[i];
}
return newArr;
}
//定义一个方法判断数组中存了几个元素
public static int getCount(Student[] arr) {
int count=0;
for(int i=0;i<arr.length;i++) {
if(arr[i]!=null) {
count++;
}
}
return count;
}
//判断id是否重复
public static boolean contains(Student[] arr,int id) {
for(int i=0;i<arr.length;i++) {
Student stu=arr[i];
int sid=stu.getId();
if(id==stu.getId()) {
return true;
}
}
return false;
}
}