给新数组arr2里的arr[新下标]的id属性赋值前 需要先给arr[新下标]初始化()

package com.fqs.demo1;

import java.util.Scanner;

public class StudentTest2 {
    public static void main(String args[]) {
        //1.新建一个3个长度的数组
        Student []arr=new Student[3];
        //2.初始化数组
        Student s0=new Student("stu000","s0",18);
        Student s1=new Student("stu001","s1",19);
        Student s2=new Student("stu002","s2",20);
        //3.3个值存到数组中
        arr[0]=s0;
        arr[1]=s1;
        arr[2]=s2;
        //4.从键盘获取第4个值
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入学生的id");
        String s3id=sc.next();
        //将s3id存放到数组中
        //5.判断s3id在arr中isFind出现过吗
        //6.走到分岔路口,6.1出现过,键盘再次输入  6.2没出现过,存到arr[3]数组中 6.2是必须走的
        //6.1
        if(isFind(arr,s3id)) {
            while(isFind(arr,s3id)){//当isFind为true时,提示再次输入,当isFind为false时停止
                System.out.println("请再次输入学生的id");
                 s3id=sc.next();
                 if(isFind(arr,s3id)==false) {
                     break ;
                 }
            }
            
        }
        if(isFind(arr,s3id)==false) {//不能是else   因为是顺序执行才对
        
            //6.2分两种情况 获取id非空的个数getNotNull(Student []arr); 
            //第一种 数组内有空 位置;第二种数组内无位置,需要新增数组
            //第一种
            int countok=getNotNull(arr);
            System.out.println("getNotNull(arr):"+countok);
            if(countok<arr.length) {
                System.out.println("arr[count].setId(s3id);");
                
                arr[countok].setId(s3id);
            }
            //第二种
            else if(countok==arr.length) {
                //1.新建一个arr长度+1的数组arr2
                
                int len=arr.length+1;
                System.out.println("arr2的len:"+len);
                Student []arr2=new Student[len];
                for(int i=0;i<arr.length;i++) {
                    arr2[i]=arr[i];
                }
                System.out.println("countok:"+countok);
                
                //先给arr2数组 初始化 数组[下标]关联Student
                Student sok=new Student();
                //将sok赋值给arr2[3]
                arr2[countok]=sok;
                //赋值数组[下标]里 id属性
                arr2[countok].setId(s3id);
                //8.打印数组arr2
                for(int i=0;i<arr2.length;i++) {
                    Student sok2=arr2[i];
                    System.out.println("arr2:"+sok2.getId()+" "+sok2.getName()+" "+sok2.getAge());
                }
                
            }
            
        }
        //7.打印数组arr
        for(int i=0;i<arr.length;i++) {
            Student s=arr[i];
            System.out.println("arr:"+s.getId()+" "+s.getName()+" "+s.getAge());
        }
        
        
    }//结束主方法
//1.isFind 方法 获取boolean
//2.传入(Student[]arr,String s3id)
//3.有返回值
public static boolean isFind(Student[]arr,String s3id) {
    for(int i=0;i<arr.length;i++) {
        if(arr[i].getId()!=null&&arr[i].getId().equals(s3id)) {
            return true;
        }
    }
    return false;
}
//1.getNotNull 方法 获取int 数
//2.传入(Student[]arr)
//3.有返回值个数
public static int getNotNull(Student []arr) {
    int count=0;
    
    for(int i=0;i<arr.length;i++) {
        if(arr[i].getId()!=null) {
            count++;
            
        }
    }
    return count;
    
}
    


}
————————
package com.fqs.demo1;

import java.util.Scanner;

public class StudentTest2 {
    public static void main(String args[]) {
        //1.新建一个3个长度的数组
        Student []arr=new Student[3];
        //2.初始化数组
        Student s0=new Student("stu000","s0",18);
        Student s1=new Student("stu001","s1",19);
        Student s2=new Student("stu002","s2",20);
        //3.3个值存到数组中
        arr[0]=s0;
        arr[1]=s1;
        arr[2]=s2;
        //4.从键盘获取第4个值
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入学生的id");
        String s3id=sc.next();
        //将s3id存放到数组中
        //5.判断s3id在arr中isFind出现过吗
        //6.走到分岔路口,6.1出现过,键盘再次输入  6.2没出现过,存到arr[3]数组中 6.2是必须走的
        //6.1
        if(isFind(arr,s3id)) {
            while(isFind(arr,s3id)){//当isFind为true时,提示再次输入,当isFind为false时停止
                System.out.println("请再次输入学生的id");
                 s3id=sc.next();
                 if(isFind(arr,s3id)==false) {
                     break ;
                 }
            }
            
        }
        if(isFind(arr,s3id)==false) {//不能是else   因为是顺序执行才对
        
            //6.2分两种情况 获取id非空的个数getNotNull(Student []arr); 
            //第一种 数组内有空 位置;第二种数组内无位置,需要新增数组
            //第一种
            int countok=getNotNull(arr);
            System.out.println("getNotNull(arr):"+countok);
            if(countok<arr.length) {
                System.out.println("arr[count].setId(s3id);");
                
                arr[countok].setId(s3id);
            }
            //第二种
            else if(countok==arr.length) {
                //1.新建一个arr长度+1的数组arr2
                
                int len=arr.length+1;
                System.out.println("arr2的len:"+len);
                Student []arr2=new Student[len];
                for(int i=0;i<arr.length;i++) {
                    arr2[i]=arr[i];
                }
                System.out.println("countok:"+countok);
                
                //先给arr2数组 初始化 数组[下标]关联Student
                Student sok=new Student();
                //将sok赋值给arr2[3]
                arr2[countok]=sok;
                //赋值数组[下标]里 id属性
                arr2[countok].setId(s3id);
                //8.打印数组arr2
                for(int i=0;i<arr2.length;i++) {
                    Student sok2=arr2[i];
                    System.out.println("arr2:"+sok2.getId()+" "+sok2.getName()+" "+sok2.getAge());
                }
                
            }
            
        }
        //7.打印数组arr
        for(int i=0;i<arr.length;i++) {
            Student s=arr[i];
            System.out.println("arr:"+s.getId()+" "+s.getName()+" "+s.getAge());
        }
        
        
    }//结束主方法
//1.isFind 方法 获取boolean
//2.传入(Student[]arr,String s3id)
//3.有返回值
public static boolean isFind(Student[]arr,String s3id) {
    for(int i=0;i<arr.length;i++) {
        if(arr[i].getId()!=null&&arr[i].getId().equals(s3id)) {
            return true;
        }
    }
    return false;
}
//1.getNotNull 方法 获取int 数
//2.传入(Student[]arr)
//3.有返回值个数
public static int getNotNull(Student []arr) {
    int count=0;
    
    for(int i=0;i<arr.length;i++) {
        if(arr[i].getId()!=null) {
            count++;
            
        }
    }
    return count;
    
}
    


}