【问题标题】:Method to Check Password in Java Not WorkingJava中检查密码的方法不起作用
【发布时间】:2018-11-15 03:19:33
【问题描述】:

我正在尝试编写一个方法,如果字符串是或不是 CodeHS 中的有效密码,则返回该方法。

至少需要八个字符,并且只能有字母和数字。

在评分器中,它通过了除passwordCheck("codingisawesome")passwordCheck("QWERTYUIOP") 之外的所有测试。

这是我目前所拥有的:

public boolean passwordCheck(String password)
{
    if (password.length() < 8)
    {
        return false;  
    }
    else 
    {  
        char c;  
        int count = 0;   
        for (int i = 0; i < password.length(); i++) 
        {
            c = password.charAt(i);  
            if (!Character.isLetterOrDigit(c)) 
            {
                return false;  
            } else if (Character.isDigit(c)) 
            {
                count++;     
            }
        }
        if (count < 2)
        {  
            return false;  
        }
    }
    return true;  
}

如果有人可以提供帮助,我将不胜感激。谢谢。

【问题讨论】:

  • 确定这些要求吗?大写和小写字母都没有?
  • 您正在检查密码是否至少有两位数。 “至少需要八个字符,并且只能有字母和数字”没有这样的要求。根据这个规范,这两个密码都应该是有效的,但是你拒绝了它们,因为它们没有足够的数字来满足你的口味。
  • 从您的代码看来,您要求至少有 2 位数字,但您没有提到这一点

标签: java passwords


【解决方案1】:

尝试使用模式的方法(这比循环更简单):

public boolean passwordCheck(String password)
{
    return password!=null && password.length()>=8 && password.matches("[A-Za-z0-9]*");
}

关于正则表达式的体面教程(这就是 A-Z 魔法的来源):http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

【讨论】:

  • @Kartik 是的,我添加了它。
【解决方案2】:

假设您的要求如所述

至少需要八个字符,并且只能有字母和数字

那么就不需要数位数了。只需检查密码是否为最小长度,然后遍历每个返回 false 的字符(如果有的话)不是字母或数字。喜欢,

public boolean passwordCheck(String password) {
    if (password != null && password.length() >= 8) {
        for (char ch : password.toCharArray()) {
            if (!Character.isLetterOrDigit(ch)) {
                return false;
            }
        }
        return true;
    }
    return false;
}

【讨论】:

    【解决方案3】:

    这些测试未通过,因为您的代码检查密码必须至少包含 2 位数字:-

    if (count < 2)
    {  
        return false;  
    }
    

    你的测试字符串没有。删除这段代码,它应该可以工作。如需更好的方法,请参阅其他答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多