在java中创建2D坐标数组

时间:2017-11-10 18:51:37

标签: java multidimensional-array

我正在尝试创建一个二维坐标数组,每个位置的随机值介于1和4之间。我目前无法初始化值。这是我目前的方法代码:

public void createMap(){
    for (int i = 1; i < 20; i ++){
        for (int j = 1 ; j < 20; j ++) {

          coord[i][j] = setCoordinates(random.nextInt(4) + 1, random.nextInt(4) + 1);
        }
    }

    System.out.println(getCoord());
}

和这个方法:

public Coordinates setCoordinates (int row, int column){
    this.row = row;
    this.column = column;
    return coord[row][column];
}

和坐标类:

public class Coordinates {
int row;
int column;


public void setColumn(int column){
    this.column = column;
}

public void setRow(int row){
    this.row = row;
}

public int getRow(){
    return row;
}

public int getColumn(){
    return column;
}

}

控制台中的结果始终为null。 如何更改代码以实际初始化数组中的值? 最终目标是为2D游戏创建坐标网格。如果我试图在GUI GridPane上使用它,例如返回类型,我应该记住哪些具体内容?如果需要更多信息,请告诉我。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

public Coordinates setCoordinates (int row, int column){
   Coordinates c = new Coordinates();
   c.setRow(row);
   c.setColumn(column);
   return c;
}

在这种情况下,coord应为Coordinates[][] coord = new Coordinates[x][y];

答案 1 :(得分:0)

我无法从你的解释中获得太多帮助,但我向你展示了两个完整的例子,其中包括Coordinates类和没有:

示例1,使用setCoordinate函数返回Coordinates对象:

class InputFileTest(unites.TestCase):
    def test_verify_file_existance(self):
        try:
            file_name = 'Test.csv'
            file_path = '../../Data/VandV/Input_Reader/'
            verify_file_existance(file_path, file_name)
        except Exception as e:
            print("\n\aError. Unable to locate File!\nError: {}").format(str(e))
            try:
                exit(0)
            except:
                sys.exit(1)

如果你想要你可以玩getCoord()并通过知道[0]是行而返回坐标数组,[1]就是这样的列:

package com.company;

import java.io.Console;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) {
    // write your code here

        Coordinates[] coord = new Coordinates[20];

        createMap();
    }

    public static void createMap(){
        Coordinates[] coord = new Coordinates[20];

        for(int i = 0; i < 20; i ++){
            coord[i] = setCoordinates(ThreadLocalRandom.current().nextInt(0, 99) + 1, ThreadLocalRandom.current().nextInt(0, 99) + 1);
        }

        for(int i = 0; i < 20; i ++){
            coord[i].getCoord();
        }
    }

    public static Coordinates setCoordinates (int row, int column){
        Coordinates c = new Coordinates();
        c.setRow(row);
        c.setColumn(column);
        return c;
    }

    public static class Coordinates {
        int row;
        int column;

        public Coordinates(){
            //constructor
        }

        public void setColumn(int column){
            this.column = column;
        }

        public void setRow(int row){
            this.row = row;
        }

        public int getRow(){
            return row;
        }

        public int getColumn(){
            return column;
        }

        public void getCoord(){
            //just return and print the coordinates
            System.out.println("ROW: " + this.getRow() + "      COL: " + this.getColumn());
            //change void to return and return value if you like :)
        }

    }
}

然后你可以像这样打印

public int[] getCoord()
        {
            int coords[] = new int[2];

            coords[0] = this.getRow();
            coords[1] = this.getColumn();

            return coords;
        }

和示例2,没有返回坐标

for(int i = 0; i < 20; i ++){
            int coords[] = coord[i].getCoord();
            System.out.println(coords[0] + " - " + coords[1]);
        }