Я туплю уже в полдвенадцатого, или валидатор немного некорректный? Закомментированный код не равен раскомментированному? Я себе моск сломал пытаясь интерпретировать в чем именно некорректность задания элемента матрицы (как-то так формулирует валидатор причину отказа в валидации). Ну и заодно еще вопрос - является ли принятый валидатором код другого метода - drawMatrix - корректным? По-моему во вложенном цикле должно быть j < matrix[i].lenght; (ну или любого другого i). Иначе далеко не факт, что width будет равняться height и мы не улетим за пределы массива. Условие этого этапа: Первый метод - setPoint будет "ставить точку в координатах x,y цветом c". В методе надо: а) округлить x и y до целых чисел б) занести в matrix[y][x] значение с в) ничего не делать, если x < 0 или y < 0 или y > matrix.length или x > matrix[0].length Второй метод - drawMatrix копирует переданную ему картинку (матрицу) в матрицу Canvas. И не просто копирует, а начиная с координат x, y В методе надо: а) с помощью двух вложенных циклов пройтись по всем ячейкам переданной картинки б) если значение ячейки элемента [i][j] полученной матрицы не равно 0, то покрасить в матрице объекта Canvas точку (x+j, y+i) в цвет c: setPoint(x+j, y+i, c)
void setPoint(double x, double y, char c) {
        int intX = (int)Math.round(x);
        int intY = (int)Math.round(y);

/*        if ( (intX >= 0) && (intY >= 0) && (intX <= matrix[0].length) && (intY <= matrix.length) ) {
            matrix[intY][intX] = c;
        }*/

        if ( (intX < 0) || (intY < 0) || (intX > matrix[0].length) || (intY > matrix.length) ) {

        }
        else {
            matrix[intY][intX] = c;
        }

    }
void drawMatrix (double x, double y, int[][] matrix, char c) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix.length; j++) {
                if (matrix[i][j] != 0) {
                    setPoint(x + j, y + i, c);
                }
            }
        }

    }
this.matrix = new char[height + 2][width + 2];