Java, как заменить произвольный элемент массива на символ ".."

Есть массив String[] term, сделан из массива int[] progression с помощью Arrays.toString.
В массиве term мне нужно заменить рандомный элемент (определяется каждый раз заново переменной int swap = random.nextInt(1, 10);) на две точки ".."

Я пытаюсь это явно перезаписать term[swap] = "..";

IDEA выдает ошибку

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 1

Не понимаю, в чём дело. Подскажите, пожалуйста!


Ответы (1 шт):

Автор решения: Nowhere Man

Arrays.toString преобразует в строку весь массив int[], то есть для примера массив term будет содержать только один элемент-строку "[1, 2, 3, 4]" для входного массива из 4 элементов [1, 2, 3, 4].

Чтобы преобразовать входной массив целых чисел в массив соответствующих строк, можно использовать Stream API (для краткости):

int[] progression = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(progression));

String[] term = Arrays.stream(progression)
    .mapToObj(Integer::toString)
    .toArray(String[]::new);

Random random = new Random();
// теперь можно менять на многоточие некоторый элемент
term[random.nextInt(term.length)] = "...";
// и проверять результат при помощи Arrays.toString
System.out.println(Arrays.toString(term));

Результат:

[1, 2, 3, 4, 5]
[1, ..., 3, 4, 5]
→ Ссылка