Начал изучать java и столкнулся с проблемой не получается сделать таблицу.
Нужно чтобы к каждой ячейки таблицы можно было обратится как напрямую через cells, или через массив строк rows (1 строка[1ячейка, 2 ячейка, 3 ячейка,...])
, так и через массив столбцов cols
.
Также сама ячейка должна содержать ссылку на массив строки, в которой она находится и массив столбца.
После создания ячейки мне получается нужно привязать эту ячейку в таблице на свое место в определенный столбец, строку и привязать к массиву строк, столбцов внутри ячейки.
При попытке привязать внутри ячейки ее к нужному столбцу, строке выходит ошибка:
"incomptible types: table.cell[] cannot be converted to byte."
В чем проблема, вроде как я туда байты и не передаю, а передаю ссылку на массив строки/столбца, или стоит вообще по другому реализовать данный класс?
class table {
byte xlen; //ячеек по горизонтали
byte ylen; //ячеек по вертикали
cell[] cells; //массив всех ячеек, место их хранения
cell[][] rows; //массив строк, хранятся ссылки на ячейки
cell[][] cols; //массив столбцов, ссылки на ячейки
table(int xsize, int ysize) { //конструктор таблицы
xlen = (byte)xsize; //задаем размер по горизонтали для таблицы
ylen = (byte)ysize; //задаем размер по вертикали для таблицы
rows = new cell[ylen][xlen]; //создаем пустые классы
cols = new cell[xlen][ylen];
cells = new cell[xlen*ylen];
cell newcell; //временная переменная для новой ячейки
for (byte x=0; x<xlen; x++) {
for (byte y=0; y<ylen; y++) {
newcell = new cell(x, y); //создаем новую ячейку
cells[x*xlen+y] = newcell;
rows[x][y] = newcell;
cols[x][y] = newcell;
}
}
}
public class cell { //ячейка в таблице
byte x; //позиция по горизонтали
byte y; //позиция по вертикали
byte[] val; //массив значений
cell[] row; //строка в таблице
cell[] col; //столбец в таблице
cell(byte col, byte row) {
x = col;
y = row;
row = rows[row]; //ошибка
col = cols[col]; //ошибка
}
}
}
Если имена переменных передаваемого параметра и поля класса совпадают надо указывать this
, а то у вас получается что вы передаваемому параметру присваиваете значение
cell(byte col, byte row) {
x = col;
y = row;
this.row = rows[row];
this.col = cols[col];
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
При работе с матрицами, а именно с двумерным массивом назовем его int[][]a для замены строк мы можем сделать так:
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
у меня присутствует ховер, который добавляет линию подчеркивания под объектом]2
Как сделать отображение шрифта иконок кросс-браузерно?