Java程序 - 密码检查器

时间:2014-04-03 17:50:06

标签: 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) 

5 个答案:

答案 0 :(得分:3)

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

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):当且仅当此字符串包含指定的char值序列时,返回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();
        }
    }       

}

答案 1 :(得分:1)

你去..

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

public class Password {

    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));

}

}

答案 2 :(得分:0)

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

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;

答案 3 :(得分:0)

这有效

@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.");

      }
    }
}

答案 4 :(得分:-1)

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