java 创建数组对象无法实现我真的很不能理解为什么这么写不可以?求解答!

问题遇到的现象和发生背景
package work2;

import java.util.Scanner;

public class pupil {
    private String number;
    private String name;
    private String gender;
    private int age;
    private int classnumber;

   public pupil() {

    }

    public pupil(String number, String name, String gender, int age, int classnumber) {
        this.number = number;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.classnumber = classnumber;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getClassnumber() {
        return classnumber;
    }

    public void setClassnumber(int classnumber) {
        this.classnumber = classnumber;
    }
    public void addpupil(pupil pupils[]){
        Scanner scanner=new Scanner(System.in);
        for (int i = 0; i < pupils.length; i++) {
            if (pupils[i]==null){
                pupils[i]=new pupil();
            }
            System.out.println("请输入你要添加得学生得学号");
            pupils[i].setNumber(scanner.next());
            System.out.println("请输入你要添加得学生得姓名");
            pupils[i].setName(scanner.next());
            System.out.println("请输入你要添加得学生得性别");
            pupils[i].setGender(scanner.next());
            System.out.println("请输入你要添加得学生得年龄");
            pupils[i].setAge(scanner.nextInt());
            System.out.println("请输入你要添加得学生得班级号");
            pupils[i].setClassnumber(scanner.nextInt());
            break;
        }

    }
    public void delete(pupil pupils[]){
        System.out.println("请输入你要删除的学生学号");
        Scanner scanner=new Scanner(System.in);
        for (int i = 0; i < pupils.length; i++) {
            if(pupils[i].getNumber().equals(scanner.next())){
                pupils[i]=null;
                break;
            }
            else {
                System.out.println("该学生不存在");
                break;
            }

        }
    }
    public void addage(pupil pupils[]){
        for (int i = 0; i < pupils.length; i++) {
            pupils[i].setAge(pupils[i].getAge()+1);
        }
    }
    public void changeclss(pupil pupils[]){
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要转班的学生学号");
        int a= scanner.nextInt();
        for (int i = 0; i < pupils.length; i++) {
            if (pupils[i].getNumber().equals(a)){
                System.out.println("请输入你要转的班级号");
                int b= scanner.nextInt();
                pupils[i].setClassnumber(b);
                break;
            }
            else {
                System.out.println("该学生不存在");
                break;
            }
        }
    }
    public void printf(pupil pupils[]){
        for (int i = 0; i < pupils.length; i++) {
            if (pupils[i]!=null){
                System.out.print("学号:"+pupils[i].getNumber());
                System.out.print("\t姓名:"+pupils[i].getName());
                System.out.print("\t性别:"+pupils[i].getGender());
                System.out.print("\t年龄:"+pupils[i].getAge());
                System.out.print("\t班级号:"+pupils[i].getClassnumber());
            }

        }
    }

    @Override
    public String toString() {
        return "pupil{" +
                "number=" + number +
                ", name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", classnumber=" + classnumber +
                '}';
    }
}
这下面是main函数
   pupil[] ps=new pupil[5];
        ps[0]=new pupil("001","小明","男",20,1);
        ps[1]=new pupil("002","小红","女",19,1);
        ps[2]=new pupil("003","小绿","男",18,2);
        ps[3]=new pupil("004","小紫","女",17,2);
        ps[4]=new pupil("005","小白","女",16,3);


        pupil pp =new pupil();
        pp.printf(ps);//先全部输出来
        while (true){
            System.out.println("1.添加学生\n2.删除学生\n3.学生年龄增加一岁\n4.查询信息\n");
            int a= sc.nextInt();
            switch (a){
                case 1:pp.addpupil(ps);break;
                case 2:pp.delete(ps);break;
                case 3:pp.addage(ps);break;
                case 4:pp.printf(ps);break;
                default:
                    System.out.println("输入有误,请重新输入");break;
            }

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  1. main函数里没有Scanner sc,我不知道你是不是忘记复制过来了
  2. for 循环里为什么if-else全都break了呢?这样for循环的意义何在?