我正在创建一个游戏,它需要无限数量的矩形。 例如,让我说我将变量命名为car:
public Rectangle car1;
public Rectangle car2;
public Rectangle car3;
等等,
会有更简单的方法吗?像:
public int carNumber;
public Rectange car + carNumber;//if carNumber was one, it would be called car1
另外,我需要测试矩形是否包含其他矩形。 < - 我知道怎么做。
答案 0 :(得分:5)
你不能也不应该试图宣称无数的东西 - 只是没有意义。而是使用可以容纳可变数量的对象引用的ArrayList等集合。如,
private List<Rectangle> carList = new ArrayList<>();
这不起作用:
public Rectange car + carNumber;//if carNumber was one, it would be called car1
因为变量名不能以这种方式工作,所以不能通过连接字符串来创建它们。但不要担心这一点,因为ArrayList会处理这个问题。列表中的第三项可以很容易地获得:carList.get(2)
。
要查看列表中的任何Rectangle是否包含另一个Rectangle,请使用for循环并遍历该集合:
for (Rectangle rect : carList) {
if (rect.contains(testRectangle) {
// this item contains the test Rectangle
}
}
答案 1 :(得分:1)
您可以使用ArrayList执行此操作
答案 2 :(得分:1)
数组是static memory allocation
。在创建数组时,总是需要声明数组的大小,因此不可能有“无限”数组。您要找的是dynamic memory allocation
。
使用动态内存的一个示例是ArrayList
。
ArrayList
允许您在添加元素时展开它,并在删除元素时将其缩小。您可以通过继续向其添加元素来扩展ArrayList
所谓的“无限”的大小。 但是您可以添加的元素数量限制取决于系统的内存量。
基本上,dynamic memory allocation
正是您所寻找的。您也可以考虑使用Vector
。
答案 3 :(得分:0)
抱歉,您无法在JAVA中执行此操作。您无法动态创建变量名称。
我正在创建一个游戏,它需要无限数量的矩形。
如果有无限数量的矩形,您将获得OutOfMemory
。请再考虑一下。
如果已知矩形数,则可以使用静态数组。
Rectangle[] rec = new Rectangle[size];
//get the first Rectangle
Rectangle first = rec[0];
// get the total no of Rectangles
int length = rec.length();
答案 4 :(得分:-1)
一般代码如:
car1 = "blue";
car2 = "red";
car3 = "green";
是99%的时间更好地表示为数组
cars = ["blue", "red", "green"]
在Java数组初始化时,它们的长度是固定的,所以你可以做一个大的数组,或者你可以使用一个ArrayList作为上面提到的评论者,这是一个允许逐个添加的列表结构。