Добрый день. Генерированный пароль должен быть длиной 8 символов, содержать как минимум одну цифру, одну букву латинского алфавита верхнего регистра и одну - нижнего.
Код компилируется, консоль выводит пароль. Но периодически после компиляции консоль пустая - где проблема?
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 out = new ByteArrayOutputStream();
byte[] array = new byte[8];
for (int i = 0; i< array.length; i++) {
while (true) {
int rand = (int) (Math.random()*(122 - 48 +1))+ 48;
if (hasNum((byte)rand) | hasHighRegistr((byte)rand) | hasLowRegistr((byte)rand)) {
array[i] = (byte) rand;
break;
}
}
}
int number = 0;
int high = 0;
int low = 0;
for (byte b: array) {
if (hasNum (b)) {
number ++;
} else if (hasHighRegistr(b)) {
high ++;
} else if (hasLowRegistr(b)) {
low ++;
}
}
if (number >0 && high > 0 && low >0) {
out.writeBytes(array);
} else {
getPassword();
}
return out;
}
private static boolean hasNum(byte b) {
int num = (int) b;
if (num>= 48 && num <=57) {
return true;
}
return false;
}
private static boolean hasHighRegistr(byte b) {
int num = (int) b;
if (num >= 65 && num <= 90) {
return true;
}
return false;
}
private static boolean hasLowRegistr(byte b) {
int num = (int) b;
if (num >= 97 && num <= 122) {
return true;
}
return false;
}
}