一个对象中的方法影响另一个对象JAVA

时间:2014-03-26 18:01:57

标签: java arrays object

我目前有一个名为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

1 个答案:

答案 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个数组。