Придумал вот такое решение. Пароли генерирует, но возможно (в редких случаях) он будет либо без буквы верхнего регистра, либо без буквы нижнего регистра, либо без цифры. Соответственно валидатор не принимает по очереди каждое из этих условий. Один раз пишет "Пароль должен содержать хотя бы одну цифру." потом "Пароль должен содержать хотя бы одну латинскую букву нижнего регистра." и т.д. Подскажите можно ли в моем решении добавить какую нибудь проверку, или оно совсем не годится?))
package com.javarush.task.task32.task3204;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Random;
/*
Генератор паролей
*/
public class Solution {
public static void main(String[] args) {
ByteArrayOutputStream password = getPassword();
System.out.println(password.toString());
}
public static ByteArrayOutputStream getPassword() {
StringBuilder sb = new StringBuilder();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Random random = new Random();
char[] password = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
for (int i = 0; i < password.length; i++) {
sb.append(password[random.nextInt(password.length)]);
}
String readyPassword = sb.substring(0,8);
try {
baos.write(readyPassword.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
return baos;
}
}