繁体   English   中英

for循环中的子串越界

[英]Substring out of bounds in for loop

我正在编写一个简单的程序来打印给定一组要使用的字符的每个可能的密码组合。 密码必须是 5 个字符,所以我使用 5 个 for 循环来替换每个。 出于某种原因,当我尝试替换字符 4 时,我总是得到一个字符串索引越界 -1 异常。 我也不确定为什么会发生这种情况。

代码

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

password = password.substring(0, 1) + charList[char3] + password.substring(3, 4); 将长度为 3 的字符串分配给密码。

然后你调用password.substring(4)它试图访问一个不存在于字符串中的索引!

substring方法的最后一个索引是独占的,这意味着第4个caractère没有被采用。你也从1开始,这意味着你的子串只有3个字符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM