Java 交换特定数组元素时出现的问题

Java 交换特定数组元素时出现的问题,java,arrays,swap,Java,Arrays,Swap,以下是没有作业。我只是想写我自己的排列代码。我有一个想法,但我在把这个想法写成代码时遇到了问题 例如,输入是myArray={1,2,3} 那么输出应该是: 1 2 3 2 1 3 2 3 1 3 2 1 3 1 2 1 3 2 我发现用第二个元素切换第一个元素是可能的,然后用第三个元素切换第二个元素是可能的,但这并不完全可能,但我知道我需要这个 这就是为什么我的问题是如何在Java中做到这一点 我有1233,我想把第一个元素和第二个元素交换,所以我得到213。打印这个。现在我想把第二个元素和

以下是没有作业。我只是想写我自己的排列代码。我有一个想法,但我在把这个想法写成代码时遇到了问题

例如,输入是myArray={1,2,3}

那么输出应该是:

1 2 3
2 1 3
2 3 1
3 2 1
3 1 2
1 3 2
我发现用第二个元素切换第一个元素是可能的,然后用第三个元素切换第二个元素是可能的,但这并不完全可能,但我知道我需要这个

这就是为什么我的问题是如何在Java中做到这一点

我有1233,我想把第一个元素和第二个元素交换,所以我得到213。打印这个。现在我想把第二个元素和第三个元素切换,得到2,3,1,打印出来。重复n!乘以其中n是myArray长度

我试图用以下代码来实现这一点,但似乎我离它很远:

public class Test{
    public static void main(String[] args){
        int[] myArray = {1,2,3};

        for(int x=0; x<6; x++){
            for(int i=0; i<myArray.length-1; i++){
                int temp=myArray[i];
                myArray[i]=myArray[i+1];
                myArray[i+1]=temp;
            }
            for(int i=0; i<myArray.length; i++){
                System.out.print(myArray[i]+" ");
            }
            System.out.println("");
        }
    }
}
Output:
2 3 1 
3 1 2 
1 2 3 
2 3 1 
3 1 2 
1 2 3 

我不确定我是否理解正确

public static void main(String[] args) {
    int[] myArray = {1, 2, 3};
    for (int i = 0; i < 6; i++) {
        print(myArray);
        int temp = myArray[i % myArray.length];
        myArray[i % myArray.length] = myArray[(i + 1) % myArray.length];
        myArray[(i + 1) % myArray.length] = temp;
    }
}

private static void print(int[] array) {
    for (int anArray : array) {
        System.out.print(anArray + " ");
    }
    System.out.println("");
}
编辑:

我注意到,有一个错误的顺序,所以应该更好:

public static void main(String[] args) {
    int[] myArray = {1, 2, 3};

    for (int i = 0; i < 6; i++) {
        int idx = i % (myArray.length - 1);
        print(myArray);
        int temp = myArray[idx];
        myArray[idx] = myArray[idx + 1];
        myArray[idx + 1] = temp;
    }
}

首先,您希望在每次交换后打印。您看过这个吗:?第二个答案应该有帮助。