2011-07-19 204 views
0

將由矩陣引用的布爾值的二維數組將用於模擬可容納LETTERS_PER_DISPLAY字母的基於LED的顯示。Java二維數組

修改構造函數以創建具有FONT_LETTER_HEIGHT行和(FONT_LETTER_WIDTH倍LETTERS_PER_DISPLAY)列的布爾型二維數組,並將其分配給實例變量矩陣。

public class LEDDisplay 
{ 
    private boolean[] = matrix; 
    private static final int FONT_LETTER_HEIGHT = 5; 
    private static final int FONT_LETTER_WIDTH = 6; 
    private static final int LETTERS_PER_DISPLAY = 10; 

public LEDDisplay() 
{ 
    boolean[][] matrix = new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH] 
} 

請你能告訴我,我的構造函數是否正確?

+2

你誤讀了第二個要求。再次閱讀。 (答案也是錯誤的) – Jacob

+0

每個布爾值代表一個LED嗎? – powerMicha

回答

3

它實際上是不正確的 - 你通過定義一個局部的構造函數來隱藏成員變量矩陣。這是正確的做法:

public class LEDDisplay 
{ 
    private boolean[][] matrix; 
    private static final int FONT_LETTER_HEIGHT = 5; 
    private static final int FONT_LETTER_WIDTH = 6; 
    private static final int LETTERS_PER_DISPLAY = 10; 

public LEDDisplay() 
{ 
    matrix = new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH * LETTERS_PER_DISPLAY]; 
} 
+2

也許你必須乘以FONT_LEETER_WIDTH與LETTERS_PER_DISPLAY,因爲OP已經寫過:「* FONT_LETTER_WIDTH times LETTERS_PER_DISPLAY *」 –

+0

是的,謝謝! –

1

你一個維數組矩陣是類變量,而在構造函數矩陣是本地構造函數和構造函數外不可見。

0

FONT_LETTER_HEIGHT行和(FONT_LETTER_WIDTH LETTERS_PER_DISPLAY)列

即應該是:

new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH * LETTERS_PER_DISPLAY] 

並將其分配給該實例變量矩陣。

public LEDDisplay() 
{ 
    matrix = new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH] 
} 

然而

boolean[][] matrix = new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH] 

創建本地變量matrix,只有在構造函數中是可見的。這對實例變量matrix沒有影響。

0

兩個小pr​​obs與代碼:

  1. 矩陣被定義爲類的成員變量,應該被定義爲2-d數組,然後不需要在重新定義構造

  2. 原帖指出,應該有

「(FONT_LETTER_WIDTH次LETTERS_PER_D ISPLAY)列」

和你的構造只包含FONT_LETTER_WIDTH

事情是這樣的:

public class LEDDisplay 
{ 
    private boolean[][] matrix; 
    private static final int FONT_LETTER_HEIGHT = 5; 
    private static final int FONT_LETTER_WIDTH = 6; 
    private static final int LETTERS_PER_DISPLAY = 10; 

public LEDDisplay() 
{ 
    matrix = new boolean[FONT_LETTER_HEIGHT][FONT_LETTER_WIDTH * LETTERS_PER_DISPLAY]; 
}