Вроде как все генерирует верно. Но валидатор пропускает только первое условие. Помогите найти ошибку
package com.javarush.task.task32.task3204;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.stream.Stream;
/*
Генератор паролей
*/
public class Solution {
public static void main(String[] args) {
ByteArrayOutputStream password = getPassword();
System.out.println(password.toString());
}
public static ByteArrayOutputStream getPassword() {
List<Character> characters = new ArrayList<>(); //
List<Character> digits1 = new ArrayList<>();
List<Character> smallWords1 = new ArrayList<>();
List<Character> bigWords1 = new ArrayList<>();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
for (int i = 48; i <= 57 ; i++) {
digits1.add((char) i);
}
for (int i = 97; i <= 122; i++) {
smallWords1.add((char)i);
}
for (int i = 65; i <= 90 ; i++) {
bigWords1.add((char)i);
}
for (int i = 0; i < 8; i++) {
Random rnd = new Random();
double random = rnd.nextDouble();
char current;
if(random < 0.3){
current = digits1.get(rnd.nextInt(10));
}
else if(random > 0.3 && random < 0.6){
current = smallWords1.get(rnd.nextInt(26));
}
else current = bigWords1.get(rnd.nextInt(26));
characters.add(current);
}
if(Collections.disjoint(characters,digits1) || Collections.disjoint(characters,bigWords1) || Collections.disjoint(characters, smallWords1)){
getPassword();
}
else {
for (Character character : characters) {
byteArrayOutputStream.write(character);
}
}
return byteArrayOutputStream;
}
}