Иногда выдает вот такой результат Il7622V2
Хотя я же в каждом методе прописал флаги, и если хоть один флаг не сработал-он не должен выводиться, что не так?
package com.javarush.task.task32.task3204;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
/*
Генератор паролей
*/
public class Solution {
static boolean numb = false;
static boolean upper = false;
static boolean low = false;
public static void main(String[] args) {
ByteArrayOutputStream password = getPassword();
System.out.println(password.toString());
}
public static ByteArrayOutputStream getPassword() {
ByteArrayOutputStream baos=new ByteArrayOutputStream();
for(int i=0;i<8;i++){
int x= (int)(Math.random()*100);
if(x<30) baos.write(getaz());
if(x>=30&&x<60) baos.write(getAZ());
if(x>=60) baos.write(getNum());
}
if(numb&&upper&&low){
return baos;
} else
return getPassword();
}
public static byte getaz(){
String az = "abcdefghijklmnopqrstuvwxyz";
byte bufaz[] = az.getBytes();
int a= (int)(Math.random()*bufaz.length);
low=true;
return bufaz[a];
}
public static byte getAZ(){
String AZ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
byte bufAZ[]=AZ.getBytes();
int a= (int)(Math.random()*bufAZ.length);
upper=true;
return bufAZ[a];
}
public static byte getNum(){
String num="0123456789";
byte bufNum[]=num.getBytes();
int a= (int)(Math.random()*bufNum.length);
numb=true;
return bufNum[a];
}
}