2014-03-26 123 views
0

我目前有一個叫做cube的類(它代表一個2x2x2魔方)。在這個類中,我有下面的代碼創建了一個小方塊數組(構成魔方的多維數據集),然後初始化它們。向上()方法用來順時針旋轉90度的立方體的頂部:一個對象中的方法影響另一個對象JAVA

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信息:取向和位置。下面是該cubie類的代碼:

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(); 
} 

我不包括:

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; 
    } 
} 

當我嘗試在我的程序的主要部分,執行下面的一段代碼出現問題打印方法,因爲它很長,我已經徹底調試過它,但它所做的是打印出當前立方體的狀態,給出每個立方體的位置和方向。

你所期望的是2種不同的狀態,其中一種狀態是頂部順時針旋轉,另一種狀態是立方體的初始狀態。我實際得到的是兩個相同的立方體BOTH狀態,其頂部順時針旋轉。

對不起,如果有人能夠解決這個問題,我將非常感激。

-T

+1

用大寫字母開始你的課程名稱。這只是公約而不是必需品。 – AKS

+0

你可以添加你期望的輸出和實際輸出是什麼? –

回答

2

你只有一個cornerCube整個cube級磁盤陣列,因爲變量被標記爲static。更改

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

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

所以你得到的每cube實例cubie■一個陣列。

+0

完美!謝謝。我是一般的Java編程和麪向對象的新手,所以我對這些東西仍然有點朦朧。 – tDickinson

相關問題