将2d数组传递到另一个类:Java
我想创建一个二维数组,它可以在两个不同的类中用于两个不同的目的。 假设我有一个int的2d数组将2d数组传递到另一个类:Java,java,data-structures,Java,Data Structures,我想创建一个二维数组,它可以在两个不同的类中用于两个不同的目的。 假设我有一个int的2d数组 int[][] grid = {{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}; 我使用这个2D数组的第一个目的是作为2D游戏的一部分填充缓冲图像(缓冲图像代表一块岩石) 现在让我们假设我想使用完全相同的2D数组来定义数据结构,这将允许我为A
int[][] grid = {{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1}};
我使用这个2D数组的第一个目的是作为2D游戏的一部分填充缓冲图像(缓冲图像代表一块岩石)
现在让我们假设我想使用完全相同的2D数组来定义数据结构,这将允许我为AI创建搜索函数,基本上使用*算法,我希望能够为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());
}
}
import java.util.*;
公共类地图{
布尔目标位置=false;
布尔起始位置=假;
列表邻居=新的ArrayList();
公共int-createGrid(int x,int y){
int[][]网格={{1,1,1,1},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1}};
返回网格[x][y];
}
}
公共类主地图{
公共空间{
Map m=新Map();
对于(int i=0;i
我希望我的问题不是含糊不清或不连贯,而是希望有一个可以用于不同事物的数组。我知道他们的代码在最后几行不起作用:
for(int i = 0; i < createGrid[][].length; i++){
for(int j = 0; j < createGrid[][].length; j++){
}
}
for(int i=0;i
抛出一个类预期的错误,我知道当尝试在主方法中返回它时,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++){
}
}
Map-mapInstance=new-Map();
int[][]grid=mapInstance.createGrid();
对于(int i=0;i
导入java.util.ArrayList;
/**
*由Stefan Ronnkwist于2017年8月5日创建。
*/
公共类拆分StringToArray{
公共字符串[][]拆分StringToArray(字符串passedValue){
ArrayList fundNames=新建ArrayList();
ArrayList fundValues=新建ArrayList();
ArrayList fundDates=新建ArrayList();
String[]splitString=passedValue.split(“,”);
for(字符串值: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());
}否则{
基金价值。增加(“0.00000”);
}
}
String[]fundDatesArray=新字符串[fundDates.size()];
fundDatesArray=fundDates.toArray(fundDatesArray);
String[]fundNamesArray=新字符串[fundNames.size()];
fundNamesArray=fundNames.toArray(fundNamesArray);
字符串[]FundValuesRay=新字符串[fundValues.size()];
fundValuesArray=fundValues.toArray(fundValuesArray);
字符串[][]returnArray={fundNamesArray,fundDatesArray,fundValuesArray};
返回数组;
}
}
Hi,谢谢你的回复。代码提供了对2D数组的访问,但是对于{{1,1,1,1},{1,1,1},{1,1,1},{1,1,1},我是否必须以另一种方式输入值,希望如果我使用1和0,我可以创建一个2D地图或其他东西来表示无法通行的地形。这里是我的3D课堂通行证
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;
}
}