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 шт):
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]