Мне дается мульти-массив (основанный на случайном порядке выбранной страницы, абзаца и номера строки), который рассказывает историю. Мне нужно сгенерировать пароль, содержащий 3 слова, взятые случайным образом из массива. Необходимо создать правила для создания пароля (например: он должен быть длиной 10 символов, без повторения одного и того же слова);
Это для Java. (шаг 1) Пароль должен состоять из 3 слов (шаг 2) страницы, параграф и номер строки выбираются случайным образом и должны использовать случайный класс для генерации случайных чисел с помощью nextInt (). (шаг 3) Использовать split () для разделения каждого слова в случайной строке. (шаг 4) Обязательно выберите случайное слово из массива на шаге 3. (шаг 5) создайте ограничения для пароля.
Я создал оператор if-else для ограничения. Если правила не соблюдаются, программа всегда должна возвращаться к (шаг 2)
import java.util.Random;
public class passGen {
public static void main(String[] args) {
Random r=new Random();
int pageNum = r.nextInt(story.length);
int paraNum = r.nextInt(story.length);
int lineNum = r.nextInt(story.length);
System.out.print("Password = ");
for (int i = 0; i<3; i++) {
String sentence = story[pageNum][paraNum][lineNum]; // story is the array given
String[] string = sentence.split(" ");
int index = new Random().nextInt(string.length);
String randomWord = string[index];
if (randomWord.equals("a") || randomWord.contains("\n")) {
}
else
System.out.print(randomWord);
}
}
}
Допустим, генератор случайных чисел выбирает случайное предложение из массива: story [0] [1][5] дает "Мальчик едет на велосипеде \ n". Используя split (), а затем случайным образом выбирая слово на основе его индекса, он выбирает случайное слово «велосипед \ n». Я установил правило, что если он выбирает слово с новой строкой ('\ n'), он должен вернуться к шагу, где он снова генерирует случайные числа и дает мне новый массив и находит мне новое случайное слово, пока не находит меняслово, которое не имеет \ n. Например, предположим, что story [0] [1] [6] - «Он веселится».
Я ожидал, что на выходе будет напечатан один пароль с 3 случайными словами, объединенными все время.
password = boyfun.having // fun. is considered as one word with the period.
но были случаи, когда при неудаче он печатал только те слова, которые прошли ограничение ('\ n'). Иногда он напечатал бы 1 слово или 2 слова, или это выдаст ошибку при запуске программы.
password = ridingfun
password = boy
Password = Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Assign3Q1.main(passGen.java:123)
// line 123 happens is the String sentence = story[pageNum][paraNum][lineNum];