我需要编写一个程序,该程序将字符串形式的密码作为输入。
我必须使用我能想到的 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。