public class InitNumer { Random random = new Random(); public InitNumer() { super(); } /** * 随机生成一个二维数组,并指定生成的2与4的个数 * @param rowAndCol 二维数组的宽与高 * @param numberOf2 数字2的个数 * @param numberOf4 数字4的个数 */ public int[][] randomGetNumber(int rowAndCol, int numberOf2, int numberOf4) { int[][] numArray = new int[rowAndCol][rowAndCol]; for(int i=0;i
随机生成的二维数组会出现一个问题,就是当(xi,yi)与(xj,yj)坐标相同的时候就会少生成一个4。就是说随机生成的2的个数可以确定,但是4的个数不能确定。例如:
待解决。
解决办法:封装一个类point,包含属性x,y。
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Point(int y, int x) { this.y = y; this.x = x; } public Point() { }}
将数组中为0的坐标放到一个集合中。
for(int i =0;i
然后加入4的时候,根据集合长度随机生成一个数,取集合中下标为该随机数的元素。
将该元素取出来之后,从集合中remove。
for(int j=0;j
问题已解决。