我正在制作一个程序,作为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;
如果有人知道为什么我以前的版本无法正常工作,我很想知道。