首页 > 解决方案 > 需要帮助使用 StdDraw 绘制二维数组

问题描述

所以我已经有一个方法可以读取一个我已经转换为二维数组的文件(因此数组的维度每次都可能不同,具体取决于我使用的文件)。现在我正在尝试使用它绘制一个矩形,但它不起作用。我的代码是:

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”错误。

标签: javaarrayseclipsemultidimensional-arraystddraw

解决方案


StdDraw.rectangle需要类型的输入参数double。您将类型的输入参数传递给它int。这没关系,但您可能不想这样做。计算C/2R/2进行整数除法,因此您可能会意外向下舍入。C要解决此问题,您可以将和初始化Rdouble.


推荐阅读