【问题标题】:I have java code for entering a password following certain rules我有用于按照某些规则输入密码的 java 代码
【发布时间】:2017-09-12 05:29:17
【问题描述】:

一些网站对密码有一定的规定。我正在编写一种检查字符串是否为有效密码的方法。

密码的规则是:

  1. 密码必须至少包含八个字符
  2. 密码仅由字母和数字组成
  3. 密码必须至少包含两位数

我想出了大部分代码,我想我现在得到了一些正确的概念,无论我输入什么密码,它都会打印出“无效密码”..我尝试运行调试器但真的很困惑。

下面是我的代码:

import java.util.Scanner; 


public class practice {
  public static void main(String[] args) {

  System.out.print("Enter a password");
  Scanner input = new Scanner(System.in);

  String password = input.nextLine();
  boolean isCorrect = checkPassword(password);

  if(isCorrect)
  {
     System.out.println("Valid Password");
  }
  else 
  {
     System.out.println("Invalid Password");
  }
}

//this method checks the password
public static boolean checkPassword(String password)
{
  int countDigit = 0;

  if (password.length() >=8 ){
      return false;
      } 
  for(int i = 0; i <password.length(); i++)
  {
        if(!(Character.isLetterOrDigit(password.charAt(i))))
        {
           return false;
        }
     }

for(int i = 0; i<password.length(); i++){
      if((Character.isDigit(password.charAt(i)))){
         countDigit = countDigit + 1;
      }
     }
if (countDigit >= 2){
  return true;
}

else 
return false;

  }
   }

【问题讨论】:

  • 你并不总是需要调试器来调试。我会首先在每个 return false; 行输出一条独特的消息,看看哪个被触发了。
  • 是的,刚刚想通了..
  • 很高兴听到这个消息。

标签: java string eclipse jgrasp


【解决方案1】:

错误在这里:

if (password.length() >=8 ){
    return false;
}

这里你说如果密码长于或等于8个字符,则密码无效,这与要求完全相反。将其更改为:

if (password.length() < 8 ){
    return false;
} 

此外,您可以减少 for 循环的数量以使代码更快。您可以在同一个for循环中计算位数并检查isLetterOrDigit

    int countDigit = 0;

    if (password.length() < 8) {
        return false;
    }
    for (int i = 0; i < password.length(); i++) {
        if (!(Character.isLetterOrDigit(password.charAt(i)))) {
            return false;
        }
        if ((Character.isDigit(password.charAt(i)))) {
            countDigit = countDigit + 1;
        }
    }
    if (countDigit >= 2) {
        return true;
    } else {
        return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多