问题遇到的现象和发生背景
执行有空值不提示,还会执行,不知如何解决,
修改信息,修改不全,只会修改一个
问题相关代码,请勿粘贴截图
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;
}
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
添加数据时,输入空值,返回提示,重新输入,继续执行,
修改数据每个都能成功执行,