将2d数组传递到另一个类:Java

将2d数组传递到另一个类:Java,java,data-structures,Java,Data Structures,我想创建一个二维数组,它可以在两个不同的类中用于两个不同的目的。 假设我有一个int的2d数组 int[][] grid = {{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}; 我使用这个2D数组的第一个目的是作为2D游戏的一部分填充缓冲图像(缓冲图像代表一块岩石) 现在让我们假设我想使用完全相同的2D数组来定义数据结构,这将允许我为A

我想创建一个二维数组,它可以在两个不同的类中用于两个不同的目的。 假设我有一个int的2d数组

int[][] grid = {{1, 1, 1, 1},
                {1, 1, 1, 1},
                {1, 1, 1, 1},
               {1, 1, 1, 1}}; 
我使用这个2D数组的第一个目的是作为2D游戏的一部分填充缓冲图像(缓冲图像代表一块岩石)

现在让我们假设我想使用完全相同的2D数组来定义数据结构,这将允许我为AI创建搜索函数,基本上使用*算法,我希望能够为2D数组中的每个位置分配移动的“成本”。 我的目标是创建一个高效的2D java游戏,在尝试做一些事情时不会重新发明轮子。我的问题的希望是能够在一个类中声明一个2D数组,并使用同一个2D数组做两件事,为数组中的每个元素分配一个数字,这样我就可以计算旅行和工作的成本还可以使用2D阵列在该阵列的每个元素上显示相同的图像

以下是我到目前为止所做的

import java.util.*;

public class Map {

    boolean goal_Position = false;
    boolean start_Position = false;
    List neighbors = new ArrayList();

    public int createGrid(int x, int y) {
        int[][] grid = {{1, 1, 1, 1},
            {1, 1, 1, 1},
            {1, 1, 1, 1},
            {1, 1, 1, 1}};
        return grid[x][y];
    }

}

public class MainMap {

    public void soemthing(){
         Map m = new Map();
       for(int i = 0; i < createGrid[][].length; i++){
           for(int j = 0; j < createGrid[][].length; j++){

           }
       }
    }
    public static void main(String something[]){

        System.out.print(""+soemthing());

    }
}
import java.util.*;
公共类地图{
布尔目标位置=false;
布尔起始位置=假;
列表邻居=新的ArrayList();
公共int-createGrid(int x,int y){
int[][]网格={{1,1,1,1},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1}};
返回网格[x][y];
}
}
公共类主地图{
公共空间{
Map m=新Map();
对于(int i=0;i
我希望我的问题不是含糊不清或不连贯,而是希望有一个可以用于不同事物的数组。我知道他们的代码在最后几行不起作用:

for(int i = 0; i < createGrid[][].length; i++){
           for(int j = 0; j < createGrid[][].length; j++){

           }
       }
for(int i=0;i

抛出一个类预期的错误,我知道当尝试在主方法中返回它时,void不起作用。请提供帮助。

与其在数组中返回单个元素,不如 返回整个数组?如下所示:

public int[][] createGrid() {
    int[][] grid = {{1, 1, 1, 1},
        {1, 1, 1, 1},
        {1, 1, 1, 1},
        {1, 1, 1, 1}};
    return grid;
}
然后像这样访问它:

Map mapInstance = new Map();
int[][] grid = mapInstance.createGrid();
for(int i = 0; i < grid.length; i++){
       for(int j = 0; j < grid[0].length; j++){

       }
   }
Map-mapInstance=new-Map();
int[][]grid=mapInstance.createGrid();
对于(int i=0;i
导入java.util.ArrayList;
/**
*由Stefan Ronnkwist于2017年8月5日创建。
*/
公共类拆分StringToArray{
公共字符串[][]拆分StringToArray(字符串passedValue){
ArrayList fundNames=新建ArrayList();
ArrayList fundValues=新建ArrayList();
ArrayList fundDates=新建ArrayList();
String[]splitString=passedValue.split(“,”);
for(字符串值:splitString){
if(value.matches(“.[a-zA-Z]+.*)){
fundNames.add(value.trim());
}else if(value.indexOf(“-”>)=0){
fundDates.add(value.trim());
}else if(value.indexOf(“.”>=0){
fundValues.add(value.trim());
}否则{
基金价值。增加(“0.00000”);
}
}
String[]fundDatesArray=新字符串[fundDates.size()];
fundDatesArray=fundDates.toArray(fundDatesArray);
String[]fundNamesArray=新字符串[fundNames.size()];
fundNamesArray=fundNames.toArray(fundNamesArray);
字符串[]FundValuesRay=新字符串[fundValues.size()];
fundValuesArray=fundValues.toArray(fundValuesArray);
字符串[][]returnArray={fundNamesArray,fundDatesArray,fundValuesArray};
返回数组;
}
}

Hi,谢谢你的回复。代码提供了对2D数组的访问,但是对于{{1,1,1,1},{1,1,1},{1,1,1},{1,1,1},我是否必须以另一种方式输入值,希望如果我使用1和0,我可以创建一个2D地图或其他东西来表示无法通行的地形。这里是我的3D课堂通行证
import java.util.ArrayList;

/**
 * Created by Stefan Ronnkvist on 8/5/2017.
 */

public class SplitStringToArray {

    public String[][] SplitStringToArray(String passedValue) {
        ArrayList<String> fundNames = new ArrayList<String>();
        ArrayList<String> fundValues = new ArrayList<String>();
        ArrayList<String> fundDates = new ArrayList<String>();

        String[] splitString = passedValue.split(",");
        for (String value : splitString) {
            if (value.matches(".*[a-zA-Z]+.*")) {
                fundNames.add(value.trim());
            } else if (value.indexOf("-") >= 0) {
                fundDates.add(value.trim());
            } else if (value.indexOf(".") >= 0) {
                fundValues.add(value.trim());
            } else {
                fundValues.add("0.00000");
            }
        }
        String[] fundDatesArray = new String[fundDates.size()];
        fundDatesArray = fundDates.toArray(fundDatesArray);

        String[] fundNamesArray = new String[fundNames.size()];
        fundNamesArray = fundNames.toArray(fundNamesArray);

        String[] fundValuesArray = new String[fundValues.size()];
        fundValuesArray = fundValues.toArray(fundValuesArray);

        String[][] returnArray = {fundNamesArray, fundDatesArray, fundValuesArray};
        return returnArray;
    }
}