2

私はパスワードジェネレーターとマネージャーを作るのに苦労しています。forループから一度に1文字ずつ生成してパスワードを作成していました。各forループの反復の最後に、選択したランダムな文字を出力します。私は、パスワードcharをcharごとに、forループのiの値に関連する配列のインデックスに格納しようと試みてきました。それは単に印刷するだけではなく、私は何もできません。そのため、2つの質問があります。主な質問は、印刷した文字をキャプチャして文字列に格納することは可能ですか。または、以下のコードのように、(配列を介して)実行時に発生するnullポインター例外を回避できますか?インデックスiのpasswordStringに文字列を割り当てようとすると、nullポインタ例外が発生します。それは私のコードによってよりよく説明されるかもしれません。助けてくれてありがとう:)

package pass.gen;


public class PassGen {


    public static void main(String[] args) {
        PassGen passGen = new PassGen();
        passGen.generate();
    }

    String lAlpha = "abcdefghijklmnopqrstuvwxyz"; //used to generate lowercase pass chars
    String uAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //used to generate uppercase pass chars
    int minNum = 0; //the mininum number that a integer value can be in the password
    int maxNum = 9; //the max number "" ...........................................""
    int randomNumber; 
    int minString = 0;
    int maxString = 25;
    int randomLNum;
    int randomUNum;
    int low1 = 1;
    int high3 = 3;
    int ran3;
    char randomLChar;
    char randomUChar;
    char randomNumChar;
    String randomLString;
    String randomUString;
    String randomNumString;
    String passString []; //should this be an array of chars? 
    boolean case1; //if the case is true (case1 is for random numbers) then a random number is added to the passString
    boolean case2; //if the case is true (case2 is for random lowercase letters) then a random lowercase letter is added to the passString
    boolean case3; //if the case is true (case3 is for random uppercase letters) then a random uppercase letter is added to the passString

    void generate(){
        for(int i = 0; i < 4; i++){
            ran3 = low1 + (int)(Math.random() * ((high3 - low1) + 1));
            switch(ran3){
            case 1:genNumber(0,9);
            break;
            case 2:genLAlpha();
            break;
            case 3:genUAlpha();
            break;
            default:System.out.println("Unable to Generate a Password.");
            }
            if(case1 == true){
                passString[i] = randomNumString;

            }if(case2 == true){
                passString[i] = randomLString;

            }if(case3 == true){
                passString[i] = randomUString;
            }
        }
        System.out.println(passString);
    }

    void genNumber(int min, int max){
        randomNumber = min + (int)(Math.random() * ((max - min) + 1));
        randomNumChar = Character.forDigit(randomNumber,5);
        case1 = true;
    }

    void genLAlpha(){
        randomLNum = minString + (int)(Math.random() * ((maxString - minString) + 1));
        randomLChar = lAlpha.charAt(randomLNum);
        randomLString = Character.toString(randomLChar);
        case2 = true;
    }

    void genUAlpha(){
        randomUNum = minString + (int)(Math.random() * ((maxString - minString) + 1));
        randomUChar = uAlpha.charAt(randomUNum);
        randomUString = Character.toString(randomUChar);
        case3 = true;
    }


}
4

1 に答える 1