Java двумерный массив - PullRequest
       1

Java двумерный массив

0 голосов
/ 19 июля 2011

Двумерный массив логических значений, на который будет ссылаться матрица, будет использоваться для имитации светодиодного дисплея, который может содержать буквы LETTERS_PER_DISPLAY.

Измените конструктор, чтобы создать двумерный массивлогическое значение, содержащее строки FONT_LETTER_HEIGHT и столбцы (FONT_LETTER_WIDTH times 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 ]

3 голосов
/ 19 июля 2011

это на самом деле не правильно - вы скрываете матрицу переменных-членов, определяя локальную для конструктора. Вот правильный путь:

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 голос
/ 19 июля 2011

Ваша матрица одномерного массива является переменной класса, тогда как матрица в конструкторе является локальной для конструктора и невидимой вне конструктора.

0 голосов
/ 19 июля 2011

Два небольших зонда с кодом:

  1. Матрица определяется как переменная-член класса, должна определяться как двумерный массив, а затем не нуждается впереопределено в конструкторе

  2. в исходной записи говорится, что должно быть

"(FONT_LETTER_WIDTH times 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];
}
0 голосов
/ 19 июля 2011

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...