java要求输入姓名,如果输入为空则提示重新输入,否则执行下一步。急!

2019-11-17 23:10发布

问题:

老师要求写一个图书管理系统,在管理员注册时要求输入id,姓名,性别,年龄,家庭住址等信息,在输入姓名时要求不能为空,输入空则提示重新输入,输入字符则继续输入其他信息。
我觉得逻辑很简单,但是自己就卡在这里了,百度了几个方法都没有成功,所以来求教各位大牛,拜托!

这里设置了管理员属性,一个空构造和含参构造,其中还有各个属性的set、get、toString方法,这里省略了。
public class Administrator {
    public static void main(String[] args) {
        List<String> l = new ArrayList<String>();
        Administrator a = new Administrator();
        String str = a.toString();
        l.add(str);
        System.out.println(l);
        System.out.println(str);
    }
    private int adminId;                    //ID
    private String adminRealName;       //姓名
    private String adminSex;                //性别
    private int adminAge;               //年龄
    private String adminAddress;            //家庭住址
    private int adminPhoneNumber;       //电话号码
    private String adminLoginName;      //登录名
    private String adminLonginPassword; //登录密码
    private int adminState;             //状态1/2/3
    public Administrator() {
    }
    public Administrator(int adminId, String adminRealName, String adminSex, int adminAge, String adminAddress,
            int adminPhoneNumber, String adminLoginName, String adminLonginPassword, int adminState) {
        super();
        this.adminId = adminId;
        this.adminRealName = adminRealName;
        this.adminSex = adminSex;
        this.adminAge = adminAge;
        this.adminAddress = adminAddress;
        this.adminPhoneNumber = adminPhoneNumber;
        this.adminLoginName = adminLoginName;
        this.adminLonginPassword = adminLonginPassword;
        this.adminState = adminState;
    }
}
注册时输入各项信息,姓名设置不能为空
public class Register {
    public static void main(String[] args) {

    }
    public static void register(){
        Administrator a = new Administrator();          //空构造
        System.out.println("Please register now...");   //提示:开始注册
        Scanner s = new Scanner(System.in);             //新建扫描器
        
        //Id:用户输入,但是不能有相同,而且只能是数字
        System.out.println("setAdminId:");  //设置管理员ID
        a.setAdminId(s.nextInt());                      
        
        //姓名:不能为空
            for (int i = 0; i < 1; ) {
                while (true) {
                    System.out.println("setAdminRealName:");
                    String AdminRealName = s.next();
                    if (AdminRealName.length() < 1) {
                        System.out.println("不能为空!");
                        i--;
                        break;
                    }
                }
                break;
            }
        //性别:必填,只能是男或女
        System.out.println("setAdminSex:");
        a.setAdminSex(s.next());
            
        System.out.println("registed!");
        System.out.println(a.toString());
        s.close();
    }
}

回答1:

首先你for循环里是一个死循环 而你名字的输入是在控制台 而控制台的空格和空回车不会接收到输入流里 直到你有真输入再回车输入流才会接收 所以你永远进入不了if里。
一般我们会在前端页面做表单效验来控制或者在后端controller里判断不为字符串空字符串" " if(AdminRealName!=null AdminRealName.length>0){}



回答2:

private 只能本类中才能访问,Java中可以继承私有属性吗?你看看