很抱歉,如果我的问题不是很清楚,因为我找不到有关如何更好地解释它的其他方法。我想通过使用循环来做类似的事情:
第一次迭代:0、1、2、3、4,
第二次迭代:1、2、3、4、0
第三次迭代:2,3,4,0,1
第四iteraion:3,4,0,1,2
第五迭代:4、0、1、2、3
最终迭代:0、1、2、3、4
它将在第一个迭代中从0到4打印值。
然后在第二次迭代中,以下图案将继续如上所示。可以在Java中使用循环吗?
int iterations = 6;
for (int n = 0; n < iterations; n++) {
for (int i = 0; i < iterations - 1; i++) {
int value = (i + n) % (iterations - 1);
System.out.print(value + " ");
}
System.out.println();
}
输出
0 1 2 3 4
1 2 3 4 0
2 3 4 0 1
3 4 0 1 2
4 0 1 2 3
0 1 2 3 4
没有更多信息,没有其他可尝试的方法。Modulo操作员是您的朋友,我建议您学习它。
要旋转数组,首先保存第一个元素,然后将每个元素从第一个元素设置为第一个元素到倒数第二个元素(这是最后一个元素)到下一个值。最后,将最后一个值设置为第一个值(您保存的)。
private static void rotate(int[] arr) {
int first = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr[arr.length - 1] = first;
}
然后,clone
原始数组和用do while
循环迭代,直到您的数组等于其原始状态。
int[] arr = { 0, 1, 2, 3, 4 };
int[] original = arr.clone();
do {
System.out.println(Arrays.toString(arr));
rotate(arr);
} while (!Arrays.equals(arr, original));
System.out.println(Arrays.toString(arr));
哪个输出(根据要求)
[0, 1, 2, 3, 4]
[1, 2, 3, 4, 0]
[2, 3, 4, 0, 1]
[3, 4, 0, 1, 2]
[4, 0, 1, 2, 3]
[0, 1, 2, 3, 4]
也,在Java 8 中,您可以使用
生成数组int[] arr = IntStream.rangeClosed(0, 4).toArray();