繁体   English   中英

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

[英]Passing a 2d Array into another class : Java

我想创建一个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无法工作。 对此的协助将不胜感激。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM