0

我想在两个不同的类中创建一个可用于两种不同目的的二维数组。假设我有一个二维数组,例如

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

我对这个 2D 数组的第一个目的是填充缓冲图像作为 2d 游戏的一部分(缓冲图像表示岩石层。

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

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

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 不起作用。对此提供帮助将不胜感激。

4

2 回答 2

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

       }
   }
于 2012-06-26T11:06:52.270 回答
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;
    }
}
于 2017-08-06T17:12:51.243 回答