我正在尝试在java中编写一个递归密码生成程序,但是控制台不是返回一个随机生成的密码,而是吐出密码的每一个组合并继续运行。
*另外,我要求密码中至少有一个大写字母,这就是我随机生成一个或零的原因。
问题:如何使这个递归方法只打印出一个随机生成的randomSize
长度的密码?如何根据randomCapital
是否为1来制作char大写?
CODE:
public class PasswordGenerator{
public static void main(String[] args) {
Random rand = new Random();
int randomSize = rand.nextInt((13) + 8);
generatePassword("", 0, randomSize);
}
public static char[]chars = {'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5',
'6','7','8','9','!','@','$','%','^','&'};
public static void generatePassword(String password, int position, int size)
{
Random rand = new Random();
int randomCapital = rand.nextInt(1);
if(position < size && randomCapital == 0)
{
for(char ch: chars)
{
generatePassword(password + ch, position + 1, size);
}
if(position < size && randomCapital == 1)
{
for(char ch: chars)
{
//how can I make this char capital if randomCapital is 1?
generatePassword(password + ch, position + 1, size);
}
}
}
else
System.out.println(password);
}
}
答案 0 :(得分:0)
您正在生成密码的每个组合,因为您在递归堆栈的每个级别遍历char数组中的每个值,而不是为数组选择随机值。
constexpr