我必须制作一个数组。不幸的是我无法解决问题。我的问题: 我想制作一个数组(二维)并在方法中声明数组的大小。但是,这是我真正的问题,我想在其他方法中使用该数组。
我试图在类本身中创建一个数组但是它已经被声明了,我不能再改变它了。
这是事情:我需要一个我可以自己设置的数组。之后我想要另一种可以计算数组内容的方法。我还需要另一种方法来在该数组中执行其他操作。
所以我的问题是:如何声明一个数组并在其他方法中使用它? 我的代码在底部。
希望你的解释能够让你们帮助我。
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;
}
}
}
答案 0 :(得分:2)
您应该创建一个构造函数,而不是使用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];
}
字段int world[][]
现在将在构造函数中初始化。
这样,您可以在其他方法中同时声明一个数组和它的大小。要在另一个方法中初始化对象,您可以说:
Operations array = new Operations(num_rows, num_cols, num_objects, num_times);
答案 1 :(得分:2)
我试图在类本身中创建一个数组但是它已经被声明了,我不能再改变它了。 (...)如何声明数组并在其他方法中使用它?
如果我正确地理解了你的问题,你想在类范围内声明一个数组,并通过一个方法初始化/变异...这样其他方法就可以使用该数组了。
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 advice并提供构造函数。同时制作数组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
}
答案 2 :(得分:0)
如果数组大小是动态的,请不要在此初始化数组。
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
}