#java
#java
Вопрос:
Я редактирую только нижние методы для этого назначения. Я пытаюсь увеличить каждый элемент списка на n или элементы «value», но, похоже, не могу понять, как это сделать. Пока это мой подход. Существует метод поиска минимального значения, которое не показано, который работает по назначению. Я только пытаюсь изменить тело второго метода
public class ArrayListLab
{
public static void main(String[] args)
{
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(12);
list.add(45);
list.add(23);
list.add(48);
list.add(11);
System.out.println("Original list is " list);
System.out.println("The smallest value is " minimum(list)); // Expected: 11
modifyList(list, 5);
System.out.println("The new list is " list);
}
public static void modifyList(List<Integer> list, int value)
{
for(int i = 0; i < value; i );
list.get(i) = value;
}
Комментарии:
1. На выходе будет выведен список, а затем просто добавлено 5 к каждому числу в списке
Ответ №1:
Я думаю, вам нужно обновить свой for
цикл, чтобы перейти от 0 к длине list
( for(int i = 0; i < list.size(); i )
) вместо перехода от 1 к value
( for(int i = 0; i < value; i )
) . Вам также необходимо удалить оператор ;
at the end of for
, чтобы программа Java использовала приведенный ниже код обновления списка вместо перебора пустого блока кода.
Что касается того, как обновить ArrayList
объект, вы можете использовать set
для этого функцию ( list.set(i, list.get(i) value)
)
public static void modifyList(List<Integer> list, int value) {
for(int i = 0; i < list.size(); i )
list.set(i, list.get(i) value);
}
Обновление: чтобы повернуть ArrayList, как вы упомянули, вы можете удалить и вернуть первый элемент в списке, используя функцию remove(0)
, и просто добавить его в конец списка, используя add
функцию, как вы сделали в main
функции
public static void rotateList(List<Integer> list, int n) {
for(int i = 0; i < n; i )
list.add(list.remove(0));
}
Комментарии:
1. Вот и все. Спасибо
2. @ChocolateGoosePoosey Хорошо, я обновил код функцией для поворота n значений в списке
Ответ №2:
Вы должны выполнить итерацию по списку.
public static void modifyList(List<Integer> list, int value)
{
for(int i = 0; i < list.size(); i ){
list.set(i, list.get(i) value);
}
}
Комментарии:
1. «не удается найти символ i
2. и не удается найти длину символа
Ответ №3:
В вашем коде есть 2 ошибки
- Логический
- Синтаксис
Синтаксис for(int i = 0; i < value; i );
существует ;
и причина того, что ваша переменная i
не будет распознана или скажет, что она будет вне области видимости.
Логично: когда вы сделали list.get(i)
все, что он делает, выдает вам значение, связанное с этим индексом.
Вы можете сделать то int sum = list.get(i) value
, что это сделает, это получить value
из списка по индексу i
, а затем добавить 5
к нему число.
Итак, теперь ваша сумма содержит value from index i 5
то, что вы хотели.
Теперь все, что вам нужно сделать, это set
индекс i
sum
, равный вычисленному нами.
Когда мы list.set(i, sum)
это делаем index
, значение перезаписывается нашей суммой.
public static void modifyList(ArrayList<Integer> list, int value)
{
for(int i = 0 ; i < value ;i ) {
int sum = list.get(i) value;
list.set(i,sum);
}
}
Ответ №4:
Итак, у вас есть пара проблем, сначала в методе modifyList()
параметр List<Integer>
должен быть на самом деле ArrayList<Integer>
. Кроме того, ваш цикл for должен иметь а {
вместо ;
в конце строки.
Более простой способ перебора ArrayLists
—
for(Integer i : list) {list.set(i, i value); }
Кроме того, minimum(list)
значение не определено.
Проверьте https://www.w3schools.com/java/java_arraylist.asp для получения справки по спискам массивов
Комментарии:
1. чтобы удалить, а затем добавить его
int holdValue = list.get(i); list.remove(i);list.add(holdValue);
2. Да, в самый раз, для лучшей оптимизации вы можете сделать
rotate = rotate % list.size()
это, чтобы обрабатывать все более высокие числа, такие как 100 и так далее. когда мы поворачиваем список размером 5, это то же самое, что вращать 100 раз. делая этоrotate = rotate % list.size()
, вы экономите много времени.