0

我不断收到一条错误消息,指出我的字符串索引超出了 String.charAt、PasswordGenerator.matchCharAt 和 Driver.main 的范围。我不知道这到底是什么意思。此外,我的字符不会附加到我已经实例化的 stringbuilder 类的一行。我想知道这是否可能是由字符串索引错误引起的,或者是我的错。

public class Driver {

    public static void main(String[] args) {
        int length=0;
        int MaxNumber=100;
        StringBuilder password = new StringBuilder();

        do {
            if (PasswordGenerator.matchLength (length))
                System.out.println("The length of the character is " + length);
            length++;                                     // length is randomly picked
        } while (length < MaxNumber );   // or <100

        int index = 0;
        char f = 0;

        for (int d = 0; d < 127 || ; d++) {
            if  (PasswordGenerator.matchCharAt(f, index))
                d = (char) index;
            char aChar = (char)d;
            password.append(aChar);
            System.out.println("Password is: " + aChar);
            index++;

        }
    }
}
4

1 回答 1

2

您会收到错误,因为idx它将在 0 和 127 之间变化。来自 的密码PasswordGenerator可能不会那么长。例如,在您询问索引 57 是否匹配之前,您必须询问 57 是否小于密码的长度。

所以你的任务是猜测生成器保存的密码?那么你应该这样做:

Get to know the length of the password.
For each index from 0 upto but excluding the length:
    Guess the character at that index.
于 2012-04-28T00:58:24.540 回答