У меня проблема с упражнением, пытающимся ее решить. Вот задача:
Напишите программу, которая перемещается, поворачивая список несколько раз (первый элемент становится последним).
list = 1,2,3,4,5 and N = 2 -> result = 3,4,5,1,2
Обратите внимание, что N может быть больше, чем длина списка, в этом случае вы будете поворачивать список несколько раз.
list = 1,2,3,4,5 and N = 6 -> result = 2,3,4,5,1
Input
На первой строке вы получите список номеров.
На второй линии вы получите N
Выход
В единственной строке выведите числа, разделенные пробелом.
Вот ТЕСТ:
ТЕСТ 1:
Ввод 5,3,2,1 2
Выход 2,1,5,3
ТЕСТ 2:
Ввод 2,1,3,4 5
Выход 1,3,4,2
Вот мой код:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] elements = input.split(",");
int[] array = new int[elements.length];
for (int i = 0; i < elements.length; i++) {
array[i] = Integer.parseInt(elements[i]);
}
int a = scanner.nextInt();
int[] rotated = new int[elements.length];
for (int x = 0; x <= array.length - 1; x++) {
rotated[(x + a) % array.length] = array[x];
}
for (int i = 0; i < rotated.length; i++) {
if (i > 0) {
System.out.print(",");
}
System.out.print(rotated[i]);
}
}
}
Первый тест пройден. Но второй тест не пройден, и моя программа выдает неверный результат: 4,2,1,3 вместо правильного: 1,3,4,2.
Я не могу понять, в чем проблема.
Заранее благодарю за любую помощь.