Как мне увеличить каждый элемент в списке массивов на n элементов?

#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 ошибки

  1. Логический
  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() , вы экономите много времени.