首页新闻找找看学习计划

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

0
悬赏园豆:20 [已解决问题] 解决于 2019-11-17 23:28

老师要求写一个图书管理系统,在管理员注册时要求输入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();
    }
}
Hello拾忆的主页 Hello拾忆 | 初学一级 | 园豆:168
提问于:2019-11-16 15:47
< >
分享
最佳答案
1

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

收获园豆:10
一切至于创新 | 初学一级 |园豆:129 | 2019-11-17 11:03
其他回答(3)
0

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

收获园豆:10
RockyLiang | 园豆:201 (菜鸟二级) | 2019-11-16 16:25

没有用到继承,是设置了get、set方法,通过方法是可以的吧
主要目的是实现输入格式不对的时候提示,然后重新输入,正确以后执行下一步

get、set方法

public int getAdminId() {
return adminId;
}
public void setAdminId(int adminId) {
this.adminId = adminId;
}
public String getAdminRealName() {
return adminRealName;
}
public void setAdminRealName(String adminRealName) {
this.adminRealName = adminRealName;
}
..........

支持(0) 反对(0) Hello拾忆 | 园豆:168 (初学一级) | 2019-11-16 16:35

@Hello拾忆: 你要判断输入的方法可以写在set方法里啊

支持(0) 反对(0) RockyLiang | 园豆:201 (菜鸟二级) | 2019-11-16 16:42

@RockyLiang: 我之前也这么想过,但是提示一直不显示,一直回车光标一直往下走,不显示提示是怎么回事

public void setAdminRealName(String adminRealName) {
    if(adminRealName.equals(null)) {
        System.out.println("again!");
        setAdminRealName(adminRealName);
    }else {
        this.adminRealName = adminRealName;         
    }
}
      //调用
    System.out.println("setAdminRealName:");
    a.setAdminRealName(s.next());
支持(0) 反对(0) Hello拾忆 | 园豆:168 (初学一级) | 2019-11-16 17:12

@Hello拾忆:eclipse有调试器吗,你逐语句调试看有没有运行到你的输出语句呗

支持(0) 反对(0) RockyLiang | 园豆:201 (菜鸟二级) | 2019-11-16 17:32
0

realName:
System.out.println("setAdminRealName:");
a.setAdminRealName(s.next());
if (a.getAdminRealName == null || a.getAdminRealName.length() < 1) {
System.out.println("不能为空!");
goto realName;
}

Adming | 园豆:24 (初学一级) | 2019-11-18 15:34
0

私有化属性之后,在set 自动生成后,自己再加上判断条件,实在不厚

张王岩Java高手 | 园豆:204 (菜鸟二级) | 2019-11-26 20:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册