【问题标题】:Why is my array still NULL为什么我的数组仍然是 NULL
【发布时间】:2016-01-15 22:58:58
【问题描述】:

我正在尝试创建一种简单的方法来布置游戏的图块。

我是 java 和 OOP 的新手,由于某种原因,我通过循环将变量分配给数组中的变量后仍然为空。

我做错了什么,为什么我的数组还是 NULL?谢谢。

        stages stage1 = new stages();

    public void stage1init() {
        stage1.stageW = 30;
        stage1.stageH = 30;
        stage1.tileSize = 100; 
        stage1.stageStartX = 2;
        stage1.stageStartY = 24;
        //Layout Stage1
        int W = stage1.stageH;
        int H = stage1.stageW;
        for(int i = 0; i < H; i++) {
            for(int j = 0; j < W; j++) {
                stage1.TilePositionX[i][j] = 100 * j;
                stage1.TilePositionY[i][j] = 100 * j;
            }
        }
    }


    //Draw current stage

    public void drawStage1() {
        int W = stage1.stageH;
        int H = stage1.stageW;
        for(int i = 0; i < H; i++) {
            for(int j = 0; j < W; j++) {
                saveCurrentTransform();
                translate(stage1.TilePositionX[i][j], stage1.TilePositionY[i][j]);
                drawImage(grasstile, 0, 0, 100, 100);
                restoreLastTransform();
            }
        }
    }

【问题讨论】:

  • 我们需要更多代码才能真正重现您的问题 (SSCCE / MCVE)
  • 发布您的阶段课程。
  • 您没有在此代码中的任何位置设置它们。你能告诉我们你在哪里创建数组吗?
  • 它们是在stages.java中创建的public class stages { int stageW; int tileSize; int stageH; int stageStartX; int stageStartY; double[][] TilePositionX; double[][] TilePositionY;
  • 使用edit 选项在您的问题中提供更多信息。

标签: java arrays


【解决方案1】:

感谢您的回复,我需要分配数组的大小。

public void stage1init() {
        stage1.stageW = 30;
        stage1.stageH = 30;
        stage1.tileSize = 100; 
        stage1.stageStartX = 2;
        stage1.stageStartY = 24;
        stage1.TilePositionX = new double[stage1.stageW][stage1.stageH];
        stage1.TilePositionY = new double[stage1.stageW][stage1.stageH];
        //Layout Stage1
        int W = stage1.stageH;
        int H = stage1.stageW;
        for(int i = 0; i < H; i++) {
            for(int j = 0; j < W; j++) {
                stage1.TilePositionX[i][j] = 100 * j;
                //EDIT: For anyone looking to do something simular, multipy the following by i not j;
                stage1.TilePositionY[i][j] = 100 * i;
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多