我需要编写一个以字符串形式输入密码的程序。
我必须使用我能想到的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)
答案 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。