多分大きさゼロの配列、およびあなたが「境界例外外のインデックス」を取得することが
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'を返すと言っても何も返さないので、「返り値が見つからないというエラーが出ます。 – tkausl
また、最終配列の最後の要素に割り当てることができるように、 'd [0]'の初期値を保持する必要があります。そして、あなたの 'println'はおそらくあなたが意図したものを印刷しません。 –