临时3d数组不起作用

时间:2016-09-12 20:58:27

标签: java arrays 3d temp rubiks-cube

我正在制作一个程序,作为2x2x2魔方的网络。在这个方法中,我打算为12个可能的移动(向上顺时针,逆时针向上,顺时针顺时针等)中的每个移动做一个if语句,但是顺时针向上翻转的代码不起作用。 "移动"是一个在主类和" cube"中指定的字符串。和" temp"是包含Rubik's Cube当前状态的3d char数组。 " getTurn"是一种顺时针旋转面部并采取“立方体”的方法。两次(一次用于它将编辑的立方体,一次用于确实有效的临时变量),被转动的面的int值,以及它被转向的布尔值。它正在按预期工作,但是当我尝试创建魔方的两侧的运动时," cube"的临时变量,称为" temp"在代码进行时以某种方式改变,产生不正确的输出。我相信我的温度设置方式有问题,因为它的表现不正常。谢谢你帮助我!

public char[][][] getMove(char[][][] cube, char[][][] temp, String move) {

    //0 = u
    //1 = d
    //2 = l
    //3 = r
    //4 = f
    //5 = b

    if(move.equals("u")) {
        cube = getTurn(cube, cube, 0, true);

        cube[4][0][0] = temp[3][0][0]; cube[4][0][1] = temp[3][0][1];
        cube[2][0][0] = temp[4][0][0]; cube[2][0][1] = temp[4][0][1];
        cube[5][0][0] = temp[2][0][0]; cube[5][0][1] = temp[2][0][1];
        cube[3][0][0] = temp[5][0][0]; cube[3][0][1] = temp[5][0][1];

编辑:

我只是通过删除3d数组来实现它的工作" temp"并将其替换为八个临时值:

public char[][][] getMove(char[][][] cube, String move) {

    //0 = u
    //1 = d
    //2 = l
    //3 = r
    //4 = f
    //5 = b

    if(move.equals("u")) {
        cube = getTurn(cube, cube, 0, true);

        char temp1 = cube[3][0][0];
        char temp2 = cube[3][0][1];
        char temp3 = cube[4][0][0];
        char temp4 = cube[4][0][1];
        char temp5 = cube[2][0][0];
        char temp6 = cube[2][0][1];
        char temp7 = cube[5][0][0];
        char temp8 = cube[5][0][1];
        cube[4][0][0] = temp1; cube[4][0][1] = temp2;
        cube[2][0][0] = temp3; cube[2][0][1] = temp4;
        cube[5][0][0] = temp5; cube[5][0][1] = temp6;
        cube[3][0][0] = temp7; cube[3][0][1] = temp8;

如果有人知道为什么我以前的版本无法正常工作,我很想知道。

0 个答案:

没有答案
相关问题