【问题标题】:I need to set two 2d Arrays equal to one another我需要设置两个彼此相等的二维数组
【发布时间】:2015-05-07 15:49:15
【问题描述】:

我试图获取一个二维数组,我在一个方法中返回它,并将它调用到另一个方法中并设置第二个二维数组等于第一个的值。

这是第一种方法:

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。

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

【问题讨论】:

  • 什么是myNewArrayxx 是什么? yy 是什么? myArray 是什么?这些数组包含什么值?
  • 对不起,我是一个初学者。感谢您的帮助。这是编码能力的诚实失误(或缺乏)。
  • 对于您的问题我需要设置两个彼此相等的二维数组只需创建一个临时数组并将其初始化为Array1,然后设置Array1 = Array2,然后设置Array2 = tempArray;

标签: java arrays multidimensional-array return-value


【解决方案1】:

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

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

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

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

newArray = oldArray;

但这几乎没有什么实际用途

【讨论】:

    【解决方案2】:

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

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

    一个不相关的问题,但您必须小心使用此函数,因为如果 xx ==0,它将返回 ArrayOutOfBoundsNullPointer Exception

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多