[英]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.