请解读一下程序并给出详细回复

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

执行有空值不提示,还会执行,不知如何解决,
修改信息,修改不全,只会修改一个

问题相关代码,请勿粘贴截图

package student3;

public class Student3 {

private String sid;

// 学号
private String name;
// 姓名
private String age;
// 年龄
private String address;
// 地址
public Student3() {

}
public Student3(String sid,String name,String age,String address) {
    this.sid=sid;
    this.name=name;
    this.age=age;
    this.address=address;
}
public void setSid(String sid) {
    this.sid=sid;
}
public String getSid() {
    return sid;
}
public void setName(String name) {
    this.name=name;
}
public String getName() {
    return name;
}
public void setAge(String age) {
    this.age=age;
}
public String getAge() {
    return age;
}
public void setAddress(String address) {
    this.address=address;
}
public String getAddress() {
    return address;
}

}

package student3;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {

public static void main(String[] args) {
        
    Scanner sc =new Scanner(System.in);
    ArrayList<Student3> array=new ArrayList<Student3>();
    while(true) {
    System.out.println("--------欢迎来到学生信息管理系统--------");
    System.out.println("1 添加学生信息");
    System.out.println("2 删除学生信息");
    System.out.println("3 修改学生信息");
    System.out.println("4 查看所有学生信息");
    System.out.println("5 退出");
    System.out.println("请输入你的选择:");
    
    int i=sc.nextInt();
    if(i==1) {
        addStudent(array);
    }else if(i==2) {
        deleteStudent(array);
    }else if(i==3) {
        updateStudent(array);
    }else if(i==4) {
        findAllStudent(array);
    }else if(i==5) {
        System.out.println("谢谢您的使用!");
        break;

// System.exit();
}else {
System.out.println("输入错误,请重新输入:");
}
}

}
public static void addStudent(ArrayList array) {
Scanner sc=new Scanner(System.in);
String sid;
while(true) {
System.out.println("请输入学生学号:");
sid=sc.nextLine();
if(isUsed(array,sid)==true) {
System.out.println("该学号已经存在,请重新输入:");
}else {
break;
}
}
System.out.println("请输入学生姓名:");
String name=sc.nextLine();
System.out.println("请输入学生年龄:");
String age=sc.nextLine();
System.out.println("请输入学生居住地:");
String address=sc.nextLine();
Student3 s=new Student3();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("添加信息成功!");

}
public static void findAllStudent(ArrayList<Student3> array) {
    if(array.size()==0) {
        System.out.println("暂时没有内容,请先添加数据!");
        
        return;
    }
    System.out.println("学号\t姓名\t年龄\t居住地");
    for(int i=0;i<array.size();i++) {
        Student3 s=array.get(i);
        System.out.println(s.getSid()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
    }
}
public static void deleteStudent(ArrayList<Student3> array) {
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入你要删除的学生学号:");
    String sid=sc.nextLine();
    int index=-1;
    for(int i=0;i<array.size();i++) {
        Student3 s=array.get(i);
        if(s.getSid().equals(sid)) {
            index=i;
            break;
        }
    }
    if(index==-1) {
        System.out.println("该学生信息不存在,请重新输入!");
    }else {
        array.remove(index);
        System.out.println("删除学生信息成功!");
    }

// System.out.println("删除学生信息成功!");

}
public static void updateStudent(ArrayList<Student3> array) {
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入要修改的学生学号:");
    String sid=sc.nextLine();
    for(int i=0;i<array.size();i++) {
        Student3 s=array.get(i);
        if(s.getSid().equals(sid)) {
            System.out.println("请输入学生新姓名:");
            String name=sc.nextLine();
            System.out.println("请输入学生新年龄:");
            String age=sc.nextLine();
            System.out.println("请输入学生新居住地:");
            String address=sc.nextLine();
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            array.set(i, s);
            break;
        }
    }
System.out.println("修改成功!");
}
public static boolean isUsed(ArrayList<Student3> array,String sid) {
    boolean flag=false;
    for(int i=0;i<array.size();i++) {
        Student3 s=array.get(i);
        if(s.getSid().equals(sid)) {
            flag=true;
        }
    }
    return flag;
}

}

运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果

添加数据时,输入空值,返回提示,重新输入,继续执行,
修改数据每个都能成功执行,

执行有空值,指的是哪一块业务。

img


这两行之间加判断逻辑呗,如果sid为空,那就打印提示

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632