我正在制作一个程序,它充当 2x2x2 魔方的网。在这种方法中,我计划为 12 种可能的移动(顺时针向上、逆时针向上、顺时针向下等)中的每一种都创建一个 if 语句,但是我的顺时针向上代码不起作用。“move”是在主类中指定的字符串,“cube”和“temp”都是包含魔方当前状态的 3d 字符数组。“getTurn”是一种顺时针旋转面并采用“cube”两次(一次用于将要编辑的立方体,一次用于确实有效的临时变量),被转动面的int值和一个旋转方式的布尔值。它按预期工作,但是当我尝试创建魔方侧面的运动时,“cube”的临时变量,称为“temp”,随着代码的进行而以某种方式改变,从而产生不正确的输出。我认为我的 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;
如果有人知道为什么我以前的版本不起作用,我很想知道。