a2317623614
2022-05-21 09:17
采纳率: 100%
浏览 48
已结题

Java关于对象数组的问题求解

问题显示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;

}

}

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

5条回答 默认 最新

相关推荐 更多相似问题