Java 在方法中设置值数组

Java 在方法中设置值数组,java,Java,我必须做一个数组。不幸的是,我想不出什么。我的问题是: 我想制作一个数组(二维)并在一个方法中声明数组的大小。但是,这是我真正的问题,我想在其他方法中使用该数组 我试图在类本身中创建一个数组,但是它已经被声明了,我不能再更改它了 问题是:我需要一个数组,它的大小我可以自己设置。之后,我想要另一种方法,它可以计算数组中的某些内容。我还需要另一个方法在该数组中执行其他操作 所以我的问题是:如何声明数组并在其他方法中使用它? 我的代码在底部 希望你们能帮我解释清楚 public class Opera

我必须做一个数组。不幸的是,我想不出什么。我的问题是: 我想制作一个数组(二维)并在一个方法中声明数组的大小。但是,这是我真正的问题,我想在其他方法中使用该数组

我试图在类本身中创建一个数组,但是它已经被声明了,我不能再更改它了

问题是:我需要一个数组,它的大小我可以自己设置。之后,我想要另一种方法,它可以计算数组中的某些内容。我还需要另一个方法在该数组中执行其他操作

所以我的问题是:如何声明数组并在其他方法中使用它? 我的代码在底部

希望你们能帮我解释清楚

public class Operations
{

    public final int SET = 1;
    int rows;
    int cols;
    int objects;
    int times;
    int doubles = 0;
    int empty = 0;
    int world[][] = new int[rows][cols];

    public void print()
    {
        System.out.println(rows);
        System.out.println(cols);
        System.out.println(objects);
        System.out.println(times);
    }

    public void setParameters(int rows, int cols, int objects, int times)
    {
        this.rows = rows;
        this.cols = cols;
        this.objects = objects;
        this.times = times;
    }

    public void addObjects()
    {

        Random random = new Random();

        for (int i = 0; i < objects; i++)
        {
            int randomx = random.nextInt(rows);
            int randomy = random.nextInt(cols);

            world[randomx][randomy] += SET;
        }

    }

}
公共类操作
{
公共最终整数集=1;
int行;
int cols;
int对象;
整数倍;
整数倍=0;
int empty=0;
int-world[][]=新的int[rows][cols];
公开作废印刷品()
{
系统输出打印项次(行);
系统输出打印项次(cols);
System.out.println(对象);
系统输出打印项次;
}
公共void setParameters(int行、int列、int对象、int次)
{
this.rows=行;
this.cols=cols;
this.objects=对象;
这个。次=次;
}
public void addObjects()
{
随机=新随机();
for(int i=0;i
您应该创建一个构造函数,而不是使用
setParameters
方法。您可以使构造函数如下所示:

public Operations(int rows, int cols, int objects, int times)
{
    this.rows = rows;
    this.cols = cols;
    this.objects = objects;
    this.times = times;
    world = new int[rows][cols];
}
现在将在构造函数中初始化字段
intworld[][]
。 通过这种方式,您可以在其他方法中同时声明数组及其大小。要在另一个方法中初始化对象,可以说:

Operations array = new Operations(num_rows, num_cols, num_objects, num_times);

您应该创建构造函数,而不是使用
setParameters
方法。您可以使构造函数如下所示:

public Operations(int rows, int cols, int objects, int times)
{
    this.rows = rows;
    this.cols = cols;
    this.objects = objects;
    this.times = times;
    world = new int[rows][cols];
}
现在将在构造函数中初始化字段
intworld[][]
。 通过这种方式,您可以在其他方法中同时声明数组及其大小。要在另一个方法中初始化对象,可以说:

Operations array = new Operations(num_rows, num_cols, num_objects, num_times);
我试图在类本身中创建一个数组,但是它已经被声明了,我不能再更改它了。(…)如何声明数组并在其他方法中使用它

如果我正确理解了您的问题,您希望在类作用域中声明一个数组,并通过一个方法对其进行初始化/变异。。。以便其他方法可以使用该数组

public class Operations
{
   // declare the array
   private int[][] world;

   public void setParameters(int rows, int cols, int objects, int times)
   {
      this.rows = rows;
      this.cols = cols;
      this.objects = objects;
      this.times = times;
      // initialize the array
      world = new int[rows][cols];
   }

   /// .... methods that use the array
}
如果您不想允许对数组进行新的初始化(同时仍然能够更改其值),请遵循@fvrghl建议并提供构造函数。另外,将数组设置为final,这样它只能初始化一次

public class Operations
{
   // declare the array, note the final keyword
   private final int[][] world;

   public Operations(int rows, int cols, int objects, int times)
   {
      this.rows = rows;
      this.cols = cols;
      this.objects = objects;
      this.times = times;
      world = new int[rows][cols]; 
      // array is initialized, its dimensions are now fixed.
   }

   /// .... methods that use the array
}

我试图在类本身中创建一个数组,但是它已经被声明了,我不能再更改它了。(…)如何声明数组并在其他方法中使用它

如果我正确理解了您的问题,您希望在类作用域中声明一个数组,并通过一个方法对其进行初始化/变异。。。以便其他方法可以使用该数组

public class Operations
{
   // declare the array
   private int[][] world;

   public void setParameters(int rows, int cols, int objects, int times)
   {
      this.rows = rows;
      this.cols = cols;
      this.objects = objects;
      this.times = times;
      // initialize the array
      world = new int[rows][cols];
   }

   /// .... methods that use the array
}
如果您不想允许对数组进行新的初始化(同时仍然能够更改其值),请遵循@fvrghl建议并提供构造函数。另外,将数组设置为final,这样它只能初始化一次

public class Operations
{
   // declare the array, note the final keyword
   private final int[][] world;

   public Operations(int rows, int cols, int objects, int times)
   {
      this.rows = rows;
      this.cols = cols;
      this.objects = objects;
      this.times = times;
      world = new int[rows][cols]; 
      // array is initialized, its dimensions are now fixed.
   }

   /// .... methods that use the array

}

如果数组大小是动态的,请不要在此处初始化数组

int world[][] = null;   
使用setParameters方法初始化数组

public void setParameters(int rows, int cols, int objects, int times)
{
    this.rows = rows;
    this.cols = cols;
    this.objects = objects;
    this.times = times;
    world = new int[rows][cols]; //You need to initialize the array here
}

如果数组大小是动态的,请不要在此处初始化数组

int world[][] = null;   
使用setParameters方法初始化数组

public void setParameters(int rows, int cols, int objects, int times)
{
    this.rows = rows;
    this.cols = cols;
    this.objects = objects;
    this.times = times;
    world = new int[rows][cols]; //You need to initialize the array here
}


调用
setParameters()
时,需要更新world的大小,因为第一次声明world时不会实例化行和列。在setParameters中添加
world=newint[rows][cols]
;并将初始声明更改为
intworld[]
您需要访问类内的数组还是要在另一个类中的方法中访问它?当您调用
setParameters()
时,您需要更新world的大小,因为第一次声明world时没有实例化行和列。在setParameters中添加
world=newint[rows][cols]
;并将初始声明更改为
intworld[]您需要访问类中的数组还是要在另一个类中的方法中访问它?谢谢,我现在就试试:)这对我很有效,非常有用。我自己并没有想到这个想法:)只是想指出
world[][]=newint[rows][cols]将不会编译。初始化数组的正确语法是
world=newint[rows][cols]。使用构造函数和方法重新初始化数组。@AnthonyAccioly您是对的。我在没有清理的情况下复制和粘贴谢谢,我现在就试试:)这对我很有效,很多。我自己并没有想到这个想法:)只是想指出
world[][]=newint[rows][cols]将不会编译。初始化数组的正确语法是
world=newint[rows][cols]。使用构造函数和方法重新初始化数组。@AnthonyAccioly您是对的。我在没有清理的情况下复制和粘贴了他是否真的需要类中某个方法中的数组,还是关于如何从另一个类中的某个方法访问数组的问题?我的问题是如何在不同的方法中使用数组。我想在一个方法中声明数组及其大小,并在我的所有其他方法中使用它?如果是,AnthonyAccioly会给你答案。如果您需要在类之外访问它,只需将getter和setter添加到AnthonyAcciolyThen给出的代码中,就如我理解的那样