Есть массив String, перевожу его в List, добавляю в цикл. Если в первом if срабатывает условие, то необходимо добавить в List символ. После цикл начинает проход уже с расширенного List'a. Почему-то если пытаюсь добавить символ, выкидывает ошибку. Почему?
String[] digits = String.valueOf(dividend).split("");
List<String> digitsList = Arrays.asList(digits);
Integer mod;
for (int i = 0; i < digitsList.size(); i++) {
String[] lines = result.toString().split("\\n");
Integer previousReminder = lines[lines.length-1].length();
reminder.append(digitsList.get(i));
reminderNumber = Integer.parseInt(reminder.toString());
mod = reminderNumber % divisor;
if (reminderNumber < divisor && reminderNumber != previousReminder ) {
reminderNumber = reminderNumber * 10;
//digitsList.add("0"); выкидывает ошибку UnsupportedOperation
}
multiplyResult = reminderNumber / divisor * divisor;
if (reminderNumber >= divisor || dividend < divisor && firstStep) {
String lastReminder = String.format("%" + (i + 2) + "s", "_" + Integer.toString(reminderNumber));
result.append(lastReminder).append("\n");
if(dividend < divisor) {
multiply = String.format("%" + (i + 3) + "d", multiplyResult);
}else {
multiply = String.format("%" + (i + 2) + "d", multiplyResult);
}
result.append(multiply).append("\n");
Integer tab = lastReminder.length() - calculateDigit(multiplyResult);
result.append(createDivisor(multiplyResult, tab)).append("\n");
quotient.append(reminderNumber / divisor);
reminder.replace(0, reminder.length(), Integer.toString(mod));
reminderNumber = Integer.parseInt(reminder.toString());
firstStep = false;
}
}
Из документации:
Returns a fixed-size list backed by the specified array.
Обойти можно так:
List<String> digitsList = new ArrayList<>(Arrays.asList(digits));
Строка
List<String> digitsList = Arrays.asList(digits);
создает список фиксированного размера. Вернее она просто предоставляет доступ к массиву через интерфейс List<>.
А вам нужно создать свой список и добавить в него массив
List<String> digitsList = new ArrayList<>(Arrays.asList(digits));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости