получение ошибки в "temparr.get(newwindex) = arr.get(i);" эта строка в коде //получение ошибки в этой строке при преобразовании списка в массив помощь для этого
class Result {
public static List<Integer> rotateLeft(int d, List<Integer> arr, int n) {
// Write your code here
List<Integer> temparr = new ArrayList<Integer>();
for (int i = 0; i < n; i++) {
int newindex = ((i + (n - d)) % n);
// System.out.println(newindex);
temparr.get(newindex) = arr.get(i); //getting error in this line as it
converting list to array help for this
}
return temparr;
}
}
Во-первых, вы должны убедиться, что используете правильные термины. Вы не конвертируете List
в массив, а в ArrayList
. ArrayList
называется так, потому что он имеет произвольный доступ, как массив (и фактически использует массив внутри), но это не массив.
В вашем коде есть две проблемы: Джава (и фактически многие языки программирования) не позволяют использовать вызов метода слева от оператор присваивания (=
).
Я предполагаю, что вы хотите присвоить значение arr.get(i)
индексу newindex
из temparr
(*), поэтому вам нужно использовать метод .set()
:
temparr.set(newindex, arr.get(i));
Однако это тоже пока не сработает. Созданный вами ArrayList
имеет размер 0 и, следовательно, не может иметь значений, присвоенных индексам больше 0. То, как вы используете список, вам нужно будет инициализировать его значениями n
(например, 0
или null
). Это можно сделать, например, с помощью Collections.nCopies()
:
List<Integer> temparr = new ArrayList<Integer>(Collections.nCopies(n, 0));
(*) NB: «temparr
» — неправильное имя переменной. Это не массив, и все переменные являются "временными". Используйте имена, которые явно описывают содержание или цель. В этом случае я бы предложил rotatedList
.
«получение ошибки» — при описании проблемы с переполнением стека или в отчете об ошибке и т. д. всегда дает подробную информацию об ошибке. Пожалуйста, прочтите codeblog.jonskeet.uk/2010/08/29/написание идеального вопроса, чтобы узнать, как написать хороший SO-вопрос. Но в принципе вы не можете присвоить результат вызова метода. Вы пытаетесь установить значение в
temparr
? Если да, то вам нужен методset
.