| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Заполнить двумерный массив числами |
| Автор: hayaname 19.12.2012, 10:12 | ||
| Уважаемые, форумчане! Прошу Вашей подсказки по реализации такого алгоритма: Дана, к примеру матрица 5 на 5: int width = 5; int hight = 5; byte[][] matrix = new byte[this.hight][this.width]; Данный массив (matrix) нужно заполнить 0 и 1 по массиву mass: int[] mass = {2, 0, 3, 1 и тд} Массив mass формируется по алгоритму RLE, то есть последовательность: 00111 будет записана как - 2 0 3 1, то есть первое число это количество символов, а второе число - каких именно символов. Так вот вопрос - как заполнить массив matrix по массиву mass: Думал сделать так: Код:
Но выбрасывает с этой ошибкой: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExce ption: 4 Надеюсь на помощь |
| Автор: 4epT 19.12.2012, 11:28 |
| Заполнять нужно последовательно ? Или по какому то принципу ? |
| Автор: hayaname 19.12.2012, 11:37 |
| 4epT, последовательно |
| Автор: 4epT 19.12.2012, 12:11 | ||
| Как то так: matrix - матрица которая будет заполняться. arr - массив по которому будет заполняться матрица.
|
| Автор: hayaname 19.12.2012, 13:13 | ||
| 4epT, Только не пойму вот этого места:
Зачем два раза проверка такая? |
| Автор: 4epT 19.12.2012, 13:19 |
| Это такая ситуация когда кол-во значений которое еще нужно добавить (count) еще не 0, но нужно сделать перевод на новую строку. Это можно все оптимизировать, но я над этим не замрочивался) |
| Автор: hayaname 19.12.2012, 13:33 | ||
| 4epT, Понятно, тогда последний вопрос?))
Используется int width = matrix[0].length; - то есть пока k меньше ширины строки...так как матрица n*n - то получается нет смысла использовать int width = matrix[height].length; Так? |
| Автор: 4epT 19.12.2012, 13:41 |
| Если матрица n*n, то да. |