Я работаю над этим методом, который должен возвращать новый Вектор с элементами, смещенными справа на заданное количество позиций. например:Смещение элементов вектора вправо
[1 2 3 4] 0 => [1 2 3 4]
[1 2 3 4] 1 => [4 1 2 3]
[1 2 3 4] 2 => [3 4 1 2]
[1 2 3 4] 3 => [2 3 4 1]
[1 2 3 4] 4 => [1 2 3 4]
[1 2 3 4] 5 => [4 1 2 3]
мой код работает с некоторыми входами, только для 0, 2 и 4, в то время как 1 и 3 не работают.
Вот мой код:
public Vector shifted(int amount) {
Vector v = new Vector(length);
for (int i = 0; i < length; i++) {
if (i + amount > length-1) {
v.elements[i] = this.elements[(i+amount) % length];
}
else {
v.elements[i] = this.elements[(i+ amount)];
}
}
return v;
}
Почему вы используете [ 'VECTOR'] (https: // документы .oracle.com/JavaSE/8/документы/API/Java/Util/Vector.html)? Javadoc говорит: * Вместо 'Vector' рекомендуется использовать' ArrayList'. * Почему он является сырым? Дженерики были изобретены давно. – Andreas
Мне кажется, что вы на самом деле смещаетесь влево, а не вправо. Являются ли те результаты, которые вы видите для 1 и 3? Если это так, то 0, 2 и 4 будут «работать», потому что 0 и 4 не выполняют никаких сдвигов, а 2 сдвинут половину массива и, следовательно, будет выглядеть одинаково независимо от того, сдвигаетесь ли вы влево или вправо. Я думаю, вы должны попробовать его с помощью карандаша и бумаги, посмотрите, какие именно индексы в 'v.elements' вы назначаете тем индексам в' this.elements'. Если вы это сделаете, вы сможете увидеть, как это исправить. Ты очень близко. – ajb
все еще не работает, может у меня больше? пожалуйста ?? я потратил так много времени на это –