0

まず、申し訳ありませんが、コードが少し乱雑です。うまくフォーマットされませんでした。私の割り当ては、大文字と小文字で構成されるパスワードをランダムに生成することです。パスワードの長さはユーザーが指定します。これまでのところ、私のコードは未完成ですが、それは私が問題に遭遇したためです。

パスワードには小文字と大文字が表示されますが、十分な長さではありません。

たとえば、その人が14の長さのパスワードを必要としている場合、それより短いパスワードしか取得できません。本来あるべき長さではありません。

import java.util.Scanner;
import java.util.Random;

public class Password{
    public static void main(String [] args){
        Scanner in = new Scanner(System.in);
        int passwordLength = 0;
        Random randNum = new Random();
        int randNumAscii = 0;
        String generatedPassword = "";

        System.out.print("Password Length (1-14): ");
        passwordLength = in.nextInt();
        for(int count = 0; count < passwordLength; count++){ 
            randNumAscii = randNum.nextInt(123);
            if(randNumAscii >= 65 && randNumAscii <= 90 || randNumAscii >= 97 && randNumAscii <= 122)
                generatedPassword += (char)randNumAscii;
            else
                randNumAscii = randNum.nextInt(123); 
        }
        System.out.println(generatedPassword);
    }
}
4

2 に答える 2

1

これは、選択した範囲内にある場合にのみ、生成されたパスワードに文字を追加するためです。文字が外部でランダム化されている場合はrandNumAscii >= 65 && randNumAscii <= 90 || randNumAscii >= 97 && randNumAscii <= 122、文字列に追加しないでください。

できることは、その条件が満たされるまで続くforループ内にwhileループを設けるか、forループを継続するが、カウント変数を1つ減らして、いわば「そのインデックスで」新しい文字が生成されるようにすることです。

于 2012-10-14T00:46:32.057 に答える
1

あなたが言ったように、あなたの問題はここにあります:

randNumAscii = randNum.nextInt(123);
if(randNumAscii >= 65 && randNumAscii <= 90 || randNumAscii >= 97 && randNumAscii <= 122)
    generatedPassword += (char)randNumAscii;
else
    randNumAscii = randNum.nextInt(123); 

理由を説明しましょう:

基本的に、の場合userSelection == 2、コードは次のようになります。「指定された長さのスペースごとに、ランダムな文字を選択します。大文字または小文字の場合は追加します。それ以外の場合は変更します。」しかし、あなたがするのを忘れているのは、「変更された」ランダムな文字を追加することです。

ここで行う必要があるのは、次のようなものです(擬似コード)。

randNumAscii = [random from 0 to 123]
while randNumAscii is not uppercase and not lowercase:
    randNumAscii = [random from 0 to 123]
append (char)randNumAscii to generatedPassword

これは課題なので、実装はあなたにお任せします。あなたのスキルレベルがわからないので、のドキュメントwhileを読むことをお勧めします。

于 2012-10-14T00:47:00.620 に答える