我正在编写一个简单的程序,打印出每个可能的密码组合,给出一组要使用的字符。密码必须是5个字符,所以我使用5个for循环来替换每个。出于某种原因,当我尝试替换字符4时,我总是得到一个超出范围的异常的String索引。我不确定为什么会这样。
代码
char[] charList = new char[]{'a','b','c','d','e','f'};
String password = "aaaaaa";
for (int char1 = 0; char1 < charList.length; char1++) {
password = charList[char1] + password.substring(1, 4);
for (int char2 = 0; char2 < charList.length; char2++) {
password = password.substring(0) + charList[char2] + password.substring(2, 4);
for (int char3 = 0; char3 < charList.length; char3++) {
password = password.substring(0, 1) + charList[char3] + password.substring(3, 4);
for (int char4 = 0; char4 < charList.length; char4++) {
//java.lang.StringIndexOutOfBoundsException: String index out of range: -1 below
password = password.substring(0, 2) + charList[char4] + password.substring(4);
for (int char5 = 0; char5 < charList.length; char5++) {
password = password.substring(0, 3) + charList[char5];
System.out.println(password);
}
}
}
}
}
答案 0 :(得分:2)
password = password.substring(0, 1) + charList[char3] + password.substring(3, 4);
为密码分配长度为3的字符串。
然后你调用password.substring(4)
试图访问字符串中不存在的索引!
答案 1 :(得分:0)
子串方法的最后一个索引是独占的,这意味着第4个caractère不被采用。你也从1开始,这意味着你的子串只有3个字符