在java中从创建的球阵列中制作2个新的球阵列

时间:2012-10-31 14:44:10

标签: java arrays eclipse

我目前正在Eclipse中编写Java池游戏applet。我已经在applet的开头声明了一个16个球的数组,并在start()方法中处理所有球,如下所示:

Ball b[] = new Ball[16];

public void start()
{
b[0] = new Ball(200,425,0,0);
b[1] = new Ball(200, 140, 0, 0);
b[2] = new Ball(190, 120, 0, 0);
b[3] = new Ball(210, 120, 0, 0);
b[4] = new Ball(180, 100, 0, 0);
b[5] = new Ball(200, 100, 0, 0);
b[6] = new Ball(220, 100, 0, 0);
b[7] = new Ball(170, 80, 0, 0);
b[8] = new Ball(190, 80, 0, 0);
b[9] = new Ball(210, 80, 0, 0);
b[10] = new Ball(230, 80, 0, 0);
b[11] = new Ball(160, 60, 0, 0);
b[12] = new Ball(180, 60, 0, 0);
b[13] = new Ball(200, 60, 0, 0);
b[14] = new Ball(220, 60, 0, 0);
b[15] = new Ball(240, 60, 0, 0);
}

这些球的颜色为b [0]为母球,b [5]为黑球,其他球为红色或黄色,具体取决于它们在三角形内的位置。

我需要做的是从原始阵列制作另外两个阵列,其中第一个阵列只是红色球,例如b [1],b [3],b [4] .....等。第二个将只是黄色的球,例如b [2],b [6],b [7] .....等等。

我想知道的是,是否可以仅使用红色和黄色球的值来制作单个阵列的2个数组?如果是这样,那么编写这些数组的最有效方法是什么?是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

即使你似乎没有经验,这个问题的目的也很有意义。您不需要创建新的Ball实例,只需从先前定义的数组中获取实例:

Ball reds[] = new Ball[7];
Ball yellows[] = new Ball[7];

for(int i=1;i<b.length;i++) {
  if(i!=5) {
    if(i%2==0) {
      yellows[i/2-1]=b[i];
    } else {
      reds[i<5?(i/2):(i/2-1)]=b[i];
    }
  }
}

这遍历了从索引1到15的球,我们省略了数字5,并且取决于循环变量的剩余部分除以2。

编辑嘿,这不是那么简单,因为它似乎是第一个,没有球需要一些技巧......