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

プログラムを別のループ内にネストされたループとして構造化する必要があるようです。外側のループ変数は、次に検索する文字のインデックスです。次に、内側のループは、その位置でパスワード文字と一致する文字を検索します。パスワードの実際の長さがわからないため、パスワードの長さ一致する文字を見つけnたら、外側のループを終了する必要があります。 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 に答える