Здравствуйте!
Моя проблема заключается в том, что я не могу возвести в степень элементы ArrayList.
Вот как я пытаюсь сделать это:
ArrayList<Double> sqrtD = new ArrayList<Double>();
sqrtD.add(1.0);
sqrtD.add(2.0);
for(int i=0;i<sqrtD.size();i++){
sqrtD.add(Math.pow(sqrtD.get(i), 2));
}
Создайте новый списочный массив, либо сэтом изменяйте существующие. Зачем вы добавляете к имеющимся новые элементы? Или так предусмотрено тз? Например arrList.set(i, Math.pow(arrList.get(i), n));
А можно всё решить довольно просто и в пару строк, используя Java 8 Stream API:
List<Double> doubles = Arrays.asList(1.0, 2.0);
doubles = doubles.stream().map(d -> Math.pow(d, 2)).collect(Collectors.toList());
Вы добавляете новые элементы в список, а не изменяете существующие. Для того, чтобы изменять итерируюмую коллекцию, стоит воспользоваться итератором:
ArrayList<Double> sqrtD = new ArrayList<>();
sqrtD.add(1.0);
sqrtD.add(2.0);
ListIterator<Double> iterator = sqrtD.listIterator();
while (iterator.hasNext()) {
iterator.set(Math.pow(iterator.next(), 2));
}
ArrayList<Double> sqrtD = new ArrayList<Double>();
sqrtD.add(1.0);
sqrtD.add(2.0);
for(int i=0;i<sqrtD.size();i++){
double pow = Math.pow(sqrtD.get(i), 2);
sqrtD.remove(i);
sqrtD.add(i, pow);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей