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

时间:2012-06-26 11:00:47

标签: java data-structures

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

int[][] grid = {{1, 1, 1, 1},
                {1, 1, 1, 1},
                {1, 1, 1, 1},
               {1, 1, 1, 1}}; 

这个2D数组的第一个目的是将缓冲图像填充为2D游戏的一部分(缓冲图像代表一块岩石。

现在假设我想使用完全相同的2D数组来定义数据结构,这将允许我为AI创建搜索功能,基本上使用A *算法我想能够分配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());

    }
}

我希望我的问题不是模糊或不连贯,希望有一个可以用于不同事物的数组。我知道他们的代码在最后几行没有工作:

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

           }
       }

抛出一个类预期的错误,我知道当尝试在main方法中返回它时,void无效。对此的协助将不胜感激。

2 个答案:

答案 0 :(得分:1)

不是为了返回数组中的单个元素,为什么不呢 返回整个数组?像这样:

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++){

       }
   }

答案 1 :(得分:0)

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;
    }
}