Java二维数组

时间:2011-07-19 08:48:28

标签: java multidimensional-array

将由矩阵引用的二维布尔值数组将用于模拟可以保存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]
}

请告诉我我的构造函数是否正确?

4 个答案:

答案 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:

  1. 矩阵定义为类的成员变量,应定义为二维数组,然后不需要在构造函数中重新定义

  2. 原帖说明应该有

  3.   

    "(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];
    }