我目前有一个名为cube的类(代表一个2x2x2 rubik的立方体)。在这个类中,我有以下代码,它创建一个立方体数组(构成rubik立方体的立方体),然后初始化它们。 up()方法用于将立方体的顶部顺时针旋转90度:
public class cube {
private static cubie[] cornerCube = new cubie[8];
public void initialise(){
for(int i=0;i<=7;i++){
cornerCube[i] = new cubie();
cornerCube[i].setPos(i);
cornerCube[i].setOrient(0);
}
}
public void up(){
for(int i=0;i<=7;i++){
if(cornerCube[i].getPos()<=3){
cornerCube[i].setPos((cornerCube[i].getPos()+3)%4);
}
}
}
}
我正在存储关于每个立方体的2条信息:方向和位置。下面是cubie类的代码:
public class cubie {
private int orientation;
private int position;
public void setOrient(int orient){
orientation = orient;
}
public void setPos(int pos){
position = pos;
}
public int getOrient(){
return orientation;
}
public int getPos(){
return position;
}
}
当我尝试在程序的主要部分执行以下代码时出现问题:
public static void main(String[] args) {
cube cube1 = new cube();
cube cube2 = new cube();
cube1.initialise();
cube2.initialise();
cube1.up();
cube1.print();
System.out.println("...");
cube2.print();
}
我没有包含打印方法,因为它很长并且我已经彻底调试了它,但它的作用是打印当前立方体的状态,给出每个立方体的位置和方向。
您期望的是两种不同的状态,其中一种状态是顶部顺时针旋转,另一种是立方体的初始状态。我实际得到的是两个相同的立方体状态,其顶部顺时针旋转。
对于这篇长篇文章感到抱歉,如果有人能对这个问题有所了解,我将非常感激。
-T
答案 0 :(得分:2)
整个cornerCube
类只有一个cube
数组,因为该变量标记为static
。变化
public class cube {
private static cubie[] cornerCube = new cubie[8];
到
public class cube {
private cubie[] cornerCube = new cubie[8];
因此,每个cubie
实例都会获得一个cube
个数组。