java - java中从数组平铺 map

标签 java arrays nullpointerexception tile

我正在尝试迭代 2D 整数数组,以使用 Java 的 Graphics2D 生成平铺 map 。

    int[][] mapArray = {{1, 1, 1, 1, 1, 1, 1, 1},
                    {1, 0, 0, 0, 0, 0, 0, 1},
                    {1, 0, 0, 0, 0, 0, 0, 1},
                    {1, 0, 0, 0, 0, 0, 0, 1},
                    {1, 0, 0, 0, 0, 0, 0, 1},
                    {1, 1, 1, 1, 1, 1, 1, 1}};

    public void draw(Graphics2D g2d){
    for(int y = 0; y < mapArray.length; y++){
        for(int x = 0; x < mapArray[0].length; x++){
            if(mapArray[x][y] == 1){
                 ImageIcon ic = new ImageIcon("/Textures/stone.jpg");
                 g2d.drawImage(ic.getImage(), x, y, null);
            }
            else if(mapArray[x][y] == 0){
                 ImageIcon ic = new ImageIcon("/Textures/water.jpg");
                 g2d.drawImage(ic.getImage(), x, y, null);
            }

我似乎无法理解迭代二维数组的逻辑。理想情况下,每个 0 代表水砖,而每个 1 代表石砖。每次运行此程序时,我都会收到 NullPointerException

最佳答案

x 和 y 方向错误

public void draw(Graphics2D g2d){
    for(int y = 0; y < mapArray.length; y++){
        for(int x = 0; x < mapArray[y].length; x++){ //you want to use y here not 0
            if(mapArray[y][x] == 1){                 //first box is outer array second is inner one
                ImageIcon ic = new ImageIcon("/Textures/stone.jpg");
                g2d.drawImage(ic.getImage(), x, y, null);
            } else if(mapArray[y][x] == 0){
                ImageIcon ic = new ImageIcon("/Textures/water.jpg");
                g2d.drawImage(ic.getImage(), x, y, null);
            }
        }
    }
}

关于java - java中从数组平铺 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601016/

相关文章:

java - Java 中的预处理器变量

java - int[] 和 Integer[] 数组 - 有什么区别?

c++ - 写入文件时出现意外的 "random"字符

php - 循环读取文件的每一行到它自己的数组

java - Activity 内部出现奇怪的 NullPointerException

java - 为什么错误处理程序不处理我的错误?

java - 检查从连接到服务器套接字java的所有套接字接收信息

java - Ant - 设置 ClassPath 对于批量测试不起作用

java - 配置solr和sql server时出现空指针异常

java - 通讯链路故障(MYSQL SERVER 8 + JAVA)