java - 从java中创建的球数组制作2个新的球数组

标签 java arrays eclipse

我目前正在 Eclipse 中编写一个 Java 台球游戏小程序。我在我的小程序的开头声明了一个包含 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] 是黑球,其他球是红色或黄色,具体取决于它们在三角形内的位置。

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

我想知道的是,是否可以将单个数组的 2 个数组只取红色和黄色球的值?如果是这样,编写这些数组的最有效方法是什么?

提前致谢。

最佳答案

即使您看起来不是很有经验,但问题的目的非常有道理。您不需要创建新的 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,并取决于循环变量除以二的余数。

编辑嘿,这并不像一开始看起来那么简单,遗漏 5 号球需要一些技巧......

关于java - 从java中创建的球数组制作2个新的球数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160534/

相关文章:

java - Jetty 配置将所有 404 重定向到主页

java - 在当前帧之前存储视频帧?

具有最快 "Exists"查找的 C++ 容器( vector/数组/等)

eclipse - 在 Eclipse Helios 中显示运行 Tomcat 7 的错误页面时出现问题

c++ - 如何在 Eclipse C++/CPP 中为新项目设置默认工具链?

Java 类转换异常,涉及 Hibernate 返回的 List<Object[]>

java - Tomcat 不启动

在 C 中复制无符号字符

arrays - 如何在 Kotlin 上实现 readLine()!!.toIntArray() ?

java - 在 Java 中使用 GLUT 库