簡體   English   中英

一個對象中的方法影響另一個對象JAVA

[英]Methods in one object affect another object JAVA

我目前有一個名為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

對於整個cube類,只有一個cornerCube數組,因為該變量標記為static 更改

public class cube {
    private static cubie[] cornerCube = new cubie[8];

public class cube {
    private cubie[] cornerCube = new cubie[8];

所以你得到的一個陣列cubie每個實例小號cube

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM