어쩌면 크기 제로의 배열, 그리고 당신이 "경계 예외에서 인덱스"를 얻을 수 있음을
public static void shift(int[] arr, int offs) {
// e.g. arr = 1,2,3,4,5,6,7,8,9; offs = 3
offs %= arr.length;
offs = offs < 0 ? arr.length + offs : offs;
if (offs > 0) {
// reverse whole array (arr = 9,8,7,6,5,4,3,2,1)
for (int i = 0, j = arr.length - 1; i < j; i++, j--)
swap(arr, i, j);
// reverse left part (arr = 7,8,9,6,5,4,3,2,1)
for (int i = 0, j = offs - 1; i < j; i++, j--)
swap(arr, i, j);
// reverse right part (arr = 7,8,9,1,2,3,4,5,6)
for (int i = offs, j = arr.length - 1; i < j; i++, j--)
swap(arr, i, j);
}
}
private static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
return 문을 놓치고 있기 때문에 예, 그건. – shmosel
메서드에서 'int'를 반환한다고해도 "return 문이없는 오류가 계속 발생합니다"오류가 발생하기 때문에 반환하지 않습니다. – tkausl
또한'd [0]'의 초기 값을 유지해야하므로 최종 배열의 마지막 요소에 할당 할 수 있습니다. 그리고 당신의'println'은 당신이 의도 한 것을 인쇄하지 않을 것입니다. –