Реализуй логику метода getPassword, который должен возвращать ByteArrayOutputStream, в котором будут байты пароля. Требования к паролю: 1) 8 символов. 2) только цифры и латинские буквы разного регистра. 3) обязательно должны присутствовать цифры, и буквы разного регистра. Все сгенерированные пароли должны быть уникальные. Пример правильного пароля: wMh7smNu Требования: 1. Класс Solution должен содержать метод getPassword(), который возвращает ByteArrayOutputStream со сгенерированным паролем. 2. Длина пароля должна составлять 8 символов. 3. Пароль должен содержать хотя бы одну цифру. 4. Пароль должен содержать хотя бы одну латинскую букву нижнего регистра. 5. Пароль должен содержать хотя бы одну латинскую букву верхнего регистра. 6. Пароль не должен содержать других символов, кроме цифр и латинских букв разного регистра. 7. Сгенерированные пароли должны быть уникальными. Коллеги, помогите разобраться, почему главный цикл while пропускает пароль когда "булианы" равны false.
package com.javarush.task.task32.task3204;

import java.io.ByteArrayOutputStream;

/*
Генератор паролей
*/
public class Solution {
    public static void main(String[] args) {
        ByteArrayOutputStream password = getPassword();
        System.out.println(password.toString());
    }

    public static ByteArrayOutputStream getPassword() {
        ByteArrayOutputStream password = new ByteArrayOutputStream();
        boolean lowerCase = false;
        boolean upperCase = false;
        boolean num = false;
        int ch;

//        System.out.println((int)'0' +"-(0)-(9)-"+ (int)'9');
//        System.out.println((int)'A' +"-(A)-(Z)-"+ (int)'Z');
//        System.out.println((int)'a' +"-(a)-(z)-"+ (int)'z');


        while (lowerCase == false && upperCase == false && num == false) {
            lowerCase = false;
            upperCase = false;
            num = false;
            password.reset();
            for (int i = 0; i < 8; i++) {
                ch = Az09();
                if (!lowerCase && ch >= 97 && ch <= 122) lowerCase = true;
                if (!upperCase && ch >= 65 && ch <=90) upperCase = true;
                if (!num && ch >= 48 && ch <= 57) num = true;
                password.write(ch);

//                System.out.print(ch + " ");
            }
        }
//        System.out.println();
//
//        System.out.println(num);
//        System.out.println(upperCase);
//        System.out.println(lowerCase);
//
//        System.out.println();

        return password;
    }

    private static int Az09() {
        int ch = 0;
        boolean next = false;
        while (!next) {
            ch = (int)(48 + Math.random() * 75);
            if ((ch > 57 && ch < 65) || (ch > 90 && ch < 97)) continue;
            next = true;
        }
        return ch;
    }