【问题标题】:Need help using StdDraw to draw a 2D array需要帮助使用 StdDraw 绘制二维数组
【发布时间】:2023-04-09 12:51:01
【问题描述】:

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

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

【问题讨论】:

    标签: java arrays eclipse multidimensional-array stddraw


    【解决方案1】:

    StdDraw.rectangle 需要 double 类型的输入参数。您将int 类型的输入参数传递给它。这没关系,但您可能不想这样做。在计算C/2R/2 时,您会使用integer division,因此您可能会意外向下舍入。要解决此问题,您可以将 CR 初始化为 double

    【讨论】:

    • 我已将其更改为双倍(请参阅我的编辑)但我仍然遇到同样的问题...
    • 第 88 行是哪一行?
    • 你可以做double r = board.length;double c = board.length[0];
    • 你能分享一下堆栈跟踪吗?
    猜你喜欢
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2020-02-27
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多