【问题标题】:Using a 2-dimensional object array使用二维对象数组
【发布时间】:2016-03-15 15:36:58
【问题描述】:

这是我的二维数组:

String[][] theMaze = new String[row][column];

这个方法怎么用?

public void ruteToX(String[][] theMaze){
    // call theMaze and process in this method
}

【问题讨论】:

  • 里面应该有什么?
  • 您打算将数组传递给该方法吗?
  • 是的,先生。马修。那是在main中填充了值的数组。而不是如何调用已经填充方法 ruteToX 的数组?
  • 看看我的例子,看看我是如何传递数组的

标签: java arrays arrayobject type-2-dimension


【解决方案1】:

假设我正确理解了您的问题。

我将向您展示一个将数组传递给方法 ruteToX(...) 的示例。

public class Example
{

String[][] theMaze = new String[5][5];
public void ruteToX(String[][] theMaze)
{ 
//call theMaze and process in this method 
}

public static void main(....)
{
   Example ob=new Example();
   ob.ruteToX(ob.theMaze);
   //passed the value of reference or the pointer to the function ruteToX(...)
}
}

如何通过?

当你传递一个数组时,它的值pointer or reference在内存中被传递,这意味着如果你对方法中的参数数组进行任何更改,实际数组也将面临相同的更改(因为它们是相同的参考)。

【讨论】:

    【解决方案2】:

    当传入数组时,在前一个方法中(无论在 'ruteToX' 之前运行什么)调用该方法并仅使用变量名传入数组。

     public void previousMethod(){
       ruteToX(theMaze);
    }    
    
    public void ruteToX(String[][] theMaze){
        // call theMaze and process in this method
    }
    

    编辑: 此外,在该方法中,您可以按原样使用数组,也可以创建一个与原始数组相等的新数组。

    public void ruteToX(String[][] theMaze){
            String[][] secondMaze = theMaze; 
        }
    

    【讨论】:

    • 我不同意create a new array equal to the original array
    • @MathewsMathai 同意在大量示例中这不是一个好的决定,但我想提供多个选项。
    • 这与决定无关。 ` String[][] secondMaze = theMaze;` 不会创建新数组。您创建的新数组对象具有相同的引用,因为您使用的是=
    • 所以如果你对secondMaze进行更改,原始数组也将面临相同的更改。
    • 您可以使用Arrays.copyOf()theMaze.clone() 创建一个与原始数组具有相同值的新数组。
    猜你喜欢
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2019-04-13
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多