是否有任何方法可以使用循环在一定范围内打印值,但使用特定的订单Java



很抱歉,如果我的问题不是很清楚,因为我找不到有关如何更好地解释它的其他方法。我想通过使用循环来做类似的事情:

第一次迭代: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();

最新更新