我想创建一个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无效。对此的协助将不胜感激。
答案 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;
}
}