繁体   English   中英

Java 二维数组

[英]Java Two-Dimensional Array

将由矩阵引用的 boolean 值的二维数组将用于模拟可容纳 LETTERS_PER_DISPLAY 字母的基于 LED 的显示器。

修改构造函数以创建具有 FONT_LETTER_HEIGHT 行和 (FONT_LETTER_WIDTH 乘以 LETTERS_PER_DISPLAY) 列的 boolean 的二维数组,并将其分配给实例变量矩阵。

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]
}

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

这实际上是不正确的 - 您通过定义构造函数的局部变量来隐藏成员变量矩阵。 这是正确的方法:

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

您的一维数组矩阵是 class 变量,而构造函数中的矩阵对于构造函数是本地的,并且在构造函数之外不可见。

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没有影响。

代码的两个小问题:

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

  2. 原来的帖子说应该有

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM