2015-05-09 17 views
1

所以基本上,我需要生成一个1和0的数组,然后填充一定数量的矩形。矩形是“正方形”,需要形成一个更大的正方形。比方说,我希望我的大方形宽500像素,高100个方格,所以我需要10个长度为10的阵列 - 我部分成功 - 然后我需要填充小方块,具体取决于如果数组1-1为1,则应该填充生成的数组的索引,例如1-1,依此类推。如何根据数组中的项填充矩形?

public void run() { 
    int tableSize = readInt("Enter the size of the table in pixels: "); 
    int squareNumber = readInt("Enter the number of squares in a row: "); 
    filler(arrayGen(squareNumber), tableSize, squareNumber); 
    } 

private double[] arrayGen(int A) { 
    double[] arr1 = new double[A]; 
    for (int i = 0; i < arr1.length; i++) { 
     arr1[i] = (Math.random() < 0.5 ? 0 : 1); 
    } 
    return arr1; 
} 

private void filler(double[] A, int x, int y) { 
    for (int i = 0; i < A.length; i++){ 
     for (int x1 = 0; x1 < x; x1+=(x/y)) { 
      GRect rect1 = new GRect (x1, 0, x/y, x/y); 
      rect1.setFilled(true); 
      rect1.setFillColor(Color.blue); 
      if (A[i] == 1) { 
       add(rect1); 
      } 
     } 
     } 
    } 
} 

这就是我想出了,它仍然缺少一些地方,下面几行即如何将产生,但就像我上文所述,我的主要问题是与数组。

谢谢!

+0

数组的主要问题是什么;我真的不知道。我可以说这个世代如果它/他们似乎是不必要的,那么也许会抛弃这个想法。另外,如果不确定是否会添加,我不会花费实例化GRect的资源。首先检查它是否应该;然后创建它,然后添加它。 – ChiefTwoPencils

+0

数组的问题是在**填充**中,程序只读取数组中的第一个项目,并决定将要添加的所有矩形将填充/清空 –

+0

所以*被*添加*但只有那些数组值为'1'被填充? – ChiefTwoPencils

回答

0

你的代码在A [i]和第i个广场之间没有关系。 filler运行外循环A.length次,并且在内循环中创建的矩形都使用相同的A[i]值来确定它们是否应该填充,因此它们是全部填满还是全部为空取决于A数组中的最后一个值。

它也看起来像你的filler方法只为大广场的第一行创建矩形。

+0

我解决了数组的值的问题,现在我只需要使其重复多少行就像有列^^ –