2011-07-19 203 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]; 
}