Добрый день. Не проходит условие про использование только латиницы и чисел, хотя вроде всё работает прекрасно. Где ошибся?
UPDATE: изменил код, слил методы получения чисел, букв и слияния их в единый массив, в один. Но проблема не ушла. Кроме того, валидатор говорит, что в моих паролях нет латинских букв ы верхнем регистре, а они есть...
package com.javarush.task.task32.task3204;
import java.io.ByteArrayOutputStream;
import java.util.*;
/*
Генератор паролей
*/
public class Solution {
public static void main(String[] args) {
ByteArrayOutputStream password = getPassword();
System.out.println(password.toString());
}
public static ByteArrayOutputStream getPassword() {
int[] all = getElements(); //получаем числа и буквы
ByteArrayOutputStream arr = new ByteArrayOutputStream();
Random rand = new Random();
//заносим в массив минимум одно число, одну букву в нижнем регистре и одну в верхнем
arr.write(all[rand.nextInt(10)]);
arr.write(all[rand.nextInt((all.length - 10) / 2)]);
arr.write(all[45]);
//произвольно выбираем 5 букв/чисел
for (int i = 0; i < 5; i++) {
int randomNumber = rand.nextInt(all.length);
arr.write(all[randomNumber]);
}
return arr;
}
public static int[] getElements() {
int[] digs = new int[10];
int[] letters = new int[(91 - 65) + (123 - 97)];
int index = 0;
//заполняем digs и letters кодами чисел и букв соответственно
for (int i = 48; i < 58; i++) {
digs[index] = i;
index++;
}
index = 10;
//верхний регистр
for (int i = 65; i < 91; i++) {
letters[index] = i;
index++;
}
index = 25;
//нижний регистр
for (int i = 97; i < 123; i++) {
letters[index] = i;
index++;
}
//создаем конечный массив
int[] all = new int[digs.length + letters.length];
//копируем числа
for (int i = 0; i < digs.length; i++)
all[i] = digs[i];
index = 10;
//копируем буквы
for (int j = 0; j < letters.length; j++) {
all[index] = letters[j];
index++;
}
return all;
}
}