Нужна помощь с использованием StdDraw для рисования 2D-массива - PullRequest
0 голосов
/ 02 мая 2020

Итак, у меня уже есть метод, который читает файл, который я преобразовал в 2d массив (поэтому размеры массива могут отличаться каждый раз в зависимости от того, какой файл я использую). Теперь я пытаюсь нарисовать прямоугольник, используя это, и это не будет работать. Мой код:

public static void drawBoard(String [][] board)  {

    for (int i = 0; (i < board.length); i++) { //line 88
        for (int j = 0; (j < board[0].length); j++) {
            int r = board.length;
            int c = board[0].length;
            double R = new Double(r);
            double C = new Double(c);

        StdDraw.setXscale(0,C);
        StdDraw.setYscale(0,R);
        StdDraw.setCanvasSize(500,500);
        StdDraw.setPenRadius(0.05);
        StdDraw.setPenColor(StdDraw.BLUE);
        StdDraw.rectangle((C/2), (R/2), (C/2), (R/2));
        StdDraw.close();


    }
}
}

Что я могу сделать, чтобы это исправить? Как я могу заставить его нарисовать прямоугольник? он говорит, что ошибка в строке 88 и что это ошибка "java .lang.NullPointerException".

1 Ответ

0 голосов
/ 02 мая 2020

StdDraw.rectangle ожидает входные параметры типа double. Вы передаете ему входные параметры типа int. Это нормально, но вы не можете этого делать. При расчете C/2 и R/2 вы делаете целочисленное деление и, таким образом, можете случайно округлить в меньшую сторону. Чтобы это исправить, вы можете инициализировать C и R как double.

...