我试图拍摄一个2D数组,我在一个方法中返回,并将其调用到另一个方法中,并将第二个2D数组设置为等于第一个的数值。
这是第一种方法:
int xx = 23;
int yy = 9;
move(xx,yy, myArray);
myNewArray = myArray;
first = false;
第二个:
public static int[][] move(int x, int y, int[][] myNewArray)
{
Scanner input = new Scanner(System.in);
String direction = input.next();
boolean moving = true;
while(moving == true)
{
if(direction.indexOf("up") >= 0)
{
myNewArray[x][y] = 0;
myNewArray[x-1][y] = 5;
moving = false;
return myNewArray;
}
}
}
基本上我正在尝试拍摄2D数组并将其制作成地图,您可以通过更改字符移动到的位置的值将整个地图中的字符(“5”)移动到5。 ,以及他要离开的地方。
我试图在第二种方法中返回一个数组,然后用它来替换原始数组。
答案 0 :(得分:0)
Arrays.copyOf()
: Arrays.copyOf()
的哪一部分不清楚?
使用空值复制指定的数组,截断或填充(如果 必要的)所以副本有指定的长度。对于所有指数 在原始数组和副本中都有效,两个数组都会有效 包含相同的值。对于副本中有效的任何索引 但不是原始版本,副本将包含null。这些指数会 当且仅当指定的长度大于。的长度时才存在 原始数组。结果数组与类完全相同 原始阵列。
newArray = oldArray;
但实际使用很少
答案 1 :(得分:0)
我认为这里的问题是,当您执行move(x,y,array)
时,您并未将返回的结果保存到另一个变量中。因为我认为数组是通过Java中的值传递的,所以这个方法最终什么都不做。
试试这个:int[][] anotherArray = move(x, y, myArray)
一个不相关的问题,但您必须小心使用此功能,因为如果xx == 0
,它将返回ArrayOutOfBounds
或NullPointer Exception