2013-04-18 30 views
0

我正在寫一個代碼,它將數組單元格的顏色更改爲黑色或白色,具體取決於原始顏色。如果電池是白色的,它會變成黑色,反之亦然。使用布爾數組創建類的新實例

public class Grid { 

    boolean[][] grid; 
    private int Height; 
    private int Width; 
    public White; 
    public Black; 


    public Grid(int height, int width) { 

     Height = height; 
     Width = width; 

    } 

    public int getHeight() { 

     return Height; 
    } 

    public int getWidth() { 

     return Width; 
    } 

    public boolean isWhite(int i, int j) { 
     boolean [][] Grid = new boolean [Height][Width]; 
     for (i = 0; i<Height ; i++);{ 
      for (j = 0; j<Width ; j++){ 
       if (Grid[i][j] ?? //iswhite) { 
        ??//setBlack 
       } 
       else (??)//setWhite 

      } 
     } 

    }} 

    protected void setWhite(int i, int j) { 
     ?? 
    } 

    protected void setBlack(int i, int j) { 
     ?? 
    } 
} 

我相信我應該網格[i] [j]取決於布爾值,但我不知道如何確實和「創建一個實例:我用下面的代碼工作公共布爾isWhite'到'setWhite'和'setBlack'。我應該怎麼做呢?

回答

0

您已經將boolean grid[][]定義爲類變量。你需要在你的構造函數中設置一些符合grid = new boolean[height][width];的東西。爲了理智,我建議初始化所有的值。 (即,將它們全部設置爲true或false或某種預定義模式。) 完成此操作後,您可以檢查grid[i][j]的值,該值將爲true或false。 (那些無論你想代表黑色和白色)。

例如,您的字符iswhite功能,因爲這(假設白色==真)

public boolean isWhite(int i, int j) { 
     return grid[i][j]; 
} 

同樣簡單,設置功能也比較最小:

void setWhite(int i, int j) { 
    grid[i][j] = true; 
} 

void setBlack(int i, int j) { 
    grid[i][j] = false; 
} 

附加: 你可能會想創造一些代碼翻轉顏色時,而不是將其置於字符iswhite函數裏面,做合適的事情。 (它應該測試顏色,而不是更改值,對吧?)

void changeColorAtYX(int y, int x){ 
    if(isWhite(y, x)){ 
     setBlack(y, x); 
    } else { 
     setWhite(y,x); 
    } 
} 
+0

注:大多數網格/圖/等等。以[x] [y]方式設置。我注意到你先與y/height一起去了,所以我堅持這一點。 – Maple

+0

我其實還有另一個班,應該照顧那個(我還沒有做,你很可能會在這裏找到我)。謝謝你的幫助 – Emfat

0

1)你應該在你的構造函數中初始化你的數組。由於它是一個原始數組,它在每個位置都會默認爲false。如果這不是你想要的,根據需要設置爲true。

2)isWhite,從名字判斷,應該可能只是返回給定索引處的值。

3)對於設置的方法,假設false == black,只需將值設置爲true或false,取決於您想要的是白色還是黑色。