我如何定义无限数量的变量? *的Java *

时间:2014-04-13 01:48:43

标签: java variables rectangles infinite

我正在创建一个游戏,它需要无限数量的矩形。 例如,让我说我将变量命名为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

另外,我需要测试矩形是否包含其他矩形。 < - 我知道怎么做。

5 个答案:

答案 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作为上面提到的评论者,这是一个允许逐个添加的列表结构。