首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的方法返回空密码?

为什么我的方法返回空密码?
EN

Stack Overflow用户
提问于 2009-11-20 22:52:34
回答 5查看 235关注 0票数 0

我有两个类:一个生成器类和一个SystemManagement类。在Generator类中,我可以生成密码。SystemManagement类导入生成器(从另一个包)并包含附加信息。

当我创建一个SystemManagement对象并对其调用getPassword()时,我得到了null。为什么会发生这种情况?

生成器:

代码语言:javascript
复制
public class Generator {

    private static String password;
    private static Generator instance;

    public String nextPassword() {
        char[] allowedCharacters = {'a', 'b', 'c', 'd', 'e', 'f', '1', '2', '3', '4',   '5','6'};

        SecureRandom random = new SecureRandom();
        StringBuffer password1 = new StringBuffer();
        for (int i = 0; i < password1.length(); i++) {
            password1.append(allowedCharacters[random.nextInt(allowedCharacters.length)]);
        }
        password = password1.toString();
        return password;


    }

    public String currentPassword() {
        return password;
    }

    public static void setPassword(String password) {
        Generator.password = password;
    }

    public static Generator getInstance() {
        if (instance == null) {
            instance = new Generator();
        }
        return instance;
    }
}

SystemManagement:

代码语言:javascript
复制
public class SystemManagement implements Serializable {
    private String name;
    private String family;
    private String password;

    public SystemManagement() {

    }

    public SystemManagement(String password) {
        this.password = Generator.getInstance().nextPassword();
    }

    public Students addStudent(String name, String family) {
        Students student = new Students(name, family);
        students.add(student);
        return student;

    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
EN

回答 5

Stack Overflow用户

发布于 2009-11-20 23:01:09

我可以在你的代码中发现几个问题:

  • 您的nextPassword()方法始终返回一个空的String作为密码,因为您在长度为0的空StringBuilder上进行迭代。
  • 当您使用无参数构造函数创建新的SystemManagement对象时,您的password为null,因为您没有为它赋值(除非您使用D9创建一个带有D13构造函数的新D12对象,否则将忽略该参数,并且您的D14是空的,因为D15总是返回一个空的code
票数 3
EN

Stack Overflow用户

发布于 2009-11-20 22:56:41

password1.length()第一次是0,所以它永远不会被填满?

票数 0
EN

Stack Overflow用户

发布于 2009-11-20 22:56:56

代码语言:javascript
复制
 StringBuffer password1 = new StringBuffer();
    for (int i = 0; i < password1.length(); i++) {

我可以想象,对于字符串缓冲区的length,这应该是0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1770942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档