如果这包括那个(java密码生成器)[关闭]
Posted
技术标签:
【中文标题】如果这包括那个(java密码生成器)[关闭]【英文标题】:If this then include that (java password generator) [closed] 【发布时间】:2021-11-08 03:05:09 【问题描述】:我正在制作密码生成器,我希望用户可以选择是否要包含大写/小写字母、特殊字符和数字,但我不知道如何使用我拥有的代码执行此操作现在不用做太多的 if 语句。
private static final String ALPHA_CAPS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String ALPHA = "abcdefghijklmnopqrstuvwxyz";
private static final String NUMERIC = "0123456789";
private static final String SPECIAL_CHARS = "!@#$%^&*_=+-/";
private static SecureRandom random = new SecureRandom();
以上是可用于生成密码的不同字符。
public void generatePasswordAgain(ActionEvent event) throws IOException
genPassword.setText(generatePassword(length, ALPHA_CAPS + ALPHA + SPECIAL_CHARS + NUMERIC));
上面是要生成密码时调用的函数。下面是实际生成密码的代码。
public static String generatePassword(int len, String dic)
String result = "";
for (int i = 0; i < len; i++)
int index = random.nextInt(dic.length());
result += dic.charAt(index);
return result;
我想让使用该程序的人有机会选择他们想要包含在他们的程序中的字符类型。有没有一种方法可以做到这一点而不需要过多的 if 语句?
人们对他们想要包含的字符的需求由布尔值定义。
【问题讨论】:
您的问题到底是什么?你不知道如何根据条件执行代码? OP 希望传递参数以根据每种字符集的布尔标志生成密码。 【参考方案1】:如果你想避免 switch case 和 if else 级联,你可以使用单行三元运算符。
private static final String EMPTY = "";
... // StringUtils.EMPTY can also be used.
boolean alphaUpper, alphaLower, numeric, special;
... // set your boolean flags here
genPassword.setText(generatePassword(length, (alphaUpper ? ALPHA_CAPS : EMPTY) + (alphaLower ? ALPHA : EMPTY) + (special ? SPECIAL_CHARS : EMPTY) + (numeric ? NUMERIC : EMPTY)));
【讨论】:
以上是关于如果这包括那个(java密码生成器)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章