В главной активити, в методе OnCreate() загружается файл .txt в ArrayList. Этот массив содержит в себе Предложения из текста.
Я создал отдельный класс с методом CreateWords(), цель которого - выбрать одно предложение из текста, 3 слова, которых нет в нем, и 1 слово, которое есть.
Но при запуске приложения может быть и такое, что из 4 слов 2, а то и 3 могут быть в нужном предложении.
Вот моя попытка, но она не работает. Не могли бы вы подсказать, что не так?
public static class WordInText
{
public static int right_sent_index; //индекс нужного предложения в массиве предложений
public static ArrayList<String> right_array; //нужный массив, в котором предложение разбито на слова
public static int right_word_index; //нидекс нужного слова в нужном массиве
private static int random_sent_index; //случайное предложение
private static int random_word_index; //индекс случайного слова в случ. предлодении
private static ArrayList<String> random_array; //массив, аналогичный roght_array
//flag - индекс в массиве out[] слова, которое должно быть в предложении
public static String[] CreateWords(int flag)
{
right_sent_index = TaskGenerator.random.nextInt(MainActivity.sentences.size());
right_array = new ArrayList<String>(Arrays.asList(MainActivity.sentences.get(right_sent_index).toLowerCase().split(" ")));
right_word_index = TaskGenerator.random.nextInt(right_array.size());
String[] out = new String[4];
for (int i = 0; i < 4; i++)
{
if (i == flag)
{
out[i] = (right_array.get(right_word_index));
}
else
{
random_sent_index = TaskGenerator.random.nextInt(MainActivity.sentences.size());
//чтобы случайное предложение не было нужным
while (random_sent_index == right_sent_index)
{
random_sent_index = TaskGenerator.random.nextInt(MainActivity.sentences.size());
}
random_array = new ArrayList<String>(Arrays.asList(MainActivity.sentences.get(random_sent_index).toLowerCase().split(" ")));
random_word_index = TaskGenerator.random.nextInt(random_array.size());
String random_word = random_array.get(random_word_index);
//одна из попыток
for (int j = 0; j < 5; j++)
{
//if (right_array.contains(random_array.get(WordInText.random_word_index)))// & Arrays.asList(out).contains(random_array.get(random_word_index).toLowerCase()))
//if (TaskGenerator.ArrayListContains(WordInText.right_array, random_word))
if (right_array.contains(random_word))
{
//Toast.makeText(context, "AGAIN", Toast.LENGTH_SHORT).show();
WordInText.random_word_index = TaskGenerator.random.nextInt(random_array.size());
}
else
{
break;
}
}
/*while (right_array.contains(random_word))
{
WordInText.random_word_index = TaskGenerator.random.nextInt(random_array.size());
}*/
out[i] = random_array.get(random_word_index);
}
}
return out;
}
}
P.S. версия с циклом for выдает такой же результат, как и while. Почему же значение переменной индекса не изменяется?