首先,对不起代码有点混乱。格式不正确。我的任务是随机生成一个由大写和小写字母组成的密码,密码的长度由用户指定。到目前为止,我的代码尚未完成,但这是因为我遇到了问题。

我的密码将显示小写字母和大写字母,但是长度不够。

例如,如果该人想要一个长度为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);
    }
}

最佳答案

这是因为仅在所选择的范围内,才将字符添加到生成的密码中。如果字符在randNumAscii >= 65 && randNumAscii <= 90 || randNumAscii >= 97 && randNumAscii <= 122之外随机分配,则永远不要将其附加到字符串中。

您可以做的是,或者在for循环内进行一个while循环,直到满足该条件为止;或者继续执行for循环,但将count变量减小一个,这样就可以说“通过该索引”生成了一个新字符。

09-26 05:33