我需要设置两个彼此相等的2d阵列

时间:2015-05-07 15:49:15

标签: java arrays multidimensional-array return-value

我试图拍摄一个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。 ,以及他要离开的地方。

我试图在第二种方法中返回一个数组,然后用它来替换原始数组。

2 个答案:

答案 0 :(得分:0)

如果您想要内容的实际副本,请使用Arrays.copyOf()

Arrays.copyOf()的哪一部分不清楚?

  

使用空值复制指定的数组,截断或填充(如果   必要的)所以副本有指定的长度。对于所有指数   在原始数组和副本中都有效,两个数组都会有效   包含相同的值。对于副本中有效的任何索引   但不是原始版本,副本将包含null。这些指数会   当且仅当指定的长度大于。的长度时才存在   原始数组。结果数组与类完全相同   原始阵列。

如果您只想要对传入的引用的另一个引用:

newArray = oldArray;

但实际使用很少

答案 1 :(得分:0)

我认为这里的问题是,当您执行move(x,y,array)时,您并未将返回的结果保存到另一个变量中。因为我认为数组是通过Java中的值传递的,所以这个方法最终什么都不做。

试试这个:int[][] anotherArray = move(x, y, myArray)

一个不相关的问题,但您必须小心使用此功能,因为如果xx == 0

,它将返回ArrayOutOfBoundsNullPointer Exception