Java 程序 - 密码检查器

  • 本文关键字:密码 程序 Java java
  • 更新时间 :
  • 英文 :


我需要编写一个程序,该程序将字符串形式的密码作为输入。

必须使用我能想到的 15 个最常见的密码创建一个数组,确保这些常见密码都不包含在用户密码中。我已经尝试了不止几个选项,但大多数只是返回一条错误消息,指出"字符串索引超出范围"。

这是我最近的尝试。

for(int i = 0; i < commonPass.length; i++) 
{
  if (password.indexOf(commonPass[i]) > 0) 
  {
    System.out.println("Enter new password.");
    password = kb.nextLine();
  }
}

我对Java的了解相当基础,因此任何提供的帮助将不胜感激。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
String index out of range: 8 at java.lang.String.charAt(Unknown Source) at PasswordProgram.main(PasswordProgram.java:95) 

使用 include 函数检查字符串是否包含该字符串。

for(int i = 0; i < commonPass.length; i++) 
{
  if (password.contains(commonPass[i])) 
  {
     System.out.println("Enter new password.");
     password = kb.nextLine();
  }
}

来自 Java 文档 (http://docs.oracle.com/javase/7/docs/api):

contains(CharSequence s):当且仅当此字符串包含指定的字符值序列时,返回 true。

我已经测试了以下代码,应该可以正常工作。祝编程好运!

private void CheckPassword()
{
    String[] commonPass = new String[4];
    commonPass[0] = "testing";
    commonPass[1] = "stackoverflow";
    commonPass[2] = "coding";
    commonPass[3] = "userinput";
    Scanner s = new Scanner(System.in);
    System.out.println("Enter your password.");
    String password = s.nextLine();
    for(int i = 0; i < commonPass.length; i++) 
    {
        if (password.contains(commonPass[i])) 
        {
            CheckPassword();
        }
    }       
}

你去吧。

import java.util.ArrayList;import java.util.Arrays;

公共类密码 {

    public static void main(String[] args) {
    boolean wrongpassword= true;
    ArrayList<String> knownPasswordList = new ArrayList<String>();
    knownPasswordList.add("password1");
    knownPasswordList.add("password2");
    knownPasswordList.add("password3");
    knownPasswordList.add("password4");
    String password = "";
    do
    {
        System.out.println("Enter New Password");
password = kb.nextLine();
    }while(knownPasswordList.contains(password));
}

}

这应该有效。看看这是否有帮助 -

String[] commonPassword = {"pass1","pass2"}
ArrayList<String> passwordList = new ArrayList<String>(Arrays.asList(commonPassword));
String password = "";
do{
    System.out.println("Enter new password.");
    password = kb.nextLine();
}while(passwordList.contains(password));

请注意,您需要导入 -

import java.util.ArrayList;
import java.util.Arrays;

这有效

@Test
public void test(){
    String password = "dfsdf";
    String[] commonPass= new String[] {"bla", "blu", "blo", "bly", "ble", "bli"};
    for(int i = 0; i < commonPass.length; i++) 
    {
      if (password.equalsIgnoreCase(commonPass[i])) 
      {
        System.out.println("Enter new password.");
      }
    }
}

你想匹配密码,所以使用.equals为什么u使用indexOf。

最新更新