将由矩阵引用的二维布尔值数组将用于模拟可以保存LETTERS_PER_DISPLAY字母的基于LED的显示。
修改构造函数以创建一个具有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]
}
请告诉我我的构造函数是否正确?
答案 0 :(得分: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];
}
答案 1 :(得分:1)
您的一维数组矩阵是类变量,而构造函数中的矩阵是构造函数的局部变量,在构造函数外部不可见。
答案 2 :(得分: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]
创建一个仅在构造函数中可见的 local 变量matrix
。这对实例变量matrix
没有影响。
答案 3 :(得分:0)
两个带有代码的小probs:
矩阵定义为类的成员变量,应定义为二维数组,然后不需要在构造函数中重新定义
原帖说明应该有
"(FONT_LETTER_WIDTH次LETTERS_PER_DISPLAY)列"
,您的构造函数只包含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];
}