0
char val;
int idx = 1;
do {
    if (PasswordGenerator.matchCharAt (val, idx))
        System.out.println("The Password is " + password);
    idx++;
} while (idx < 127 );

我想测试字符参数是否与指定索引处的密码字符匹配。可能有很多事情是错误的,因为我已经搞砸了 2 个小时。

然后我需要将它们与 stringbuilder 一起附加(我不担心)并将字符显示到屏幕上(我也不担心)。

我不知道如何循环它们以检查 0-127 的 ascii 字母。所以我需要帮助来解决这个问题。

这是PasswordGenerator 的文档。

我正在尝试让密码在我的密码中显示随机字母(几乎或至少我认为)。这就是我为获取密码长度所做的事情......

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
4

2 回答 2

2

char 是一种原始类型 - 您可以像任何数字一样对其进行迭代。例如:

for (char c = Character.MIN_VALUE; c < Character.MAX_VALUE; c++) {
  // do stuff
}

在您的情况下,您可能会将值限制在 0 到 127 之间,具体取决于您给出的任何内容,但 char 实际上是一种数字类型。

于 2012-04-27T19:15:30.350 回答
0

听起来您需要将程序构造为嵌套在另一个循环中的循环。外部循环变量是要查找的下一个字符的索引。然后内部循环在该位置搜索与密码字符匹配的字符。由于您不知道密码的实际长度,因此您需要在找到nth字符 n匹配密码长度后终止外循环。

像这样的东西可能是你需要的:

PasswordGenerator password = ...
OUTER:
for (int len = 0; !password.matchLength(len); ) {
    for (char c = 0; c < 128; ++c) {
        if (password.matchCharAt(c, len)) {
            // found the match at index len -- record it
            ++len;
            continue OUTER; // exit the inner loop
    }
    // no match at all found for index len --
    // exit with failure
}
// exit with success

通常我不喜欢使用语句标签,但这似乎是一个使用标签的自然场所。但是,您可以通过使用额外的标志变量或其他东西来摆脱它。

于 2012-04-27T19:55:36.803 回答