如何在java中使用for循环从类创建新对象?

我有一个名为Card的类,我有这个for循环:

int i; for (i = 0; i < 13; i++) { Card cardNameHere = new Card(); } 

我想要做的是基于for循环创建新实例。 因此,例如,我希望名称为card1,card2,card3等。该数字将来自for循环。

我试过这个似乎不起作用:

 int i; for (i = 0; i < 13; i++) { Card card[i] = new Card(); } 

谁能告诉我我做错了什么?

谢谢。


所以我使用的是Hovercraft Full Of Eels的解决方案,但我还有另外一个问题。

我正在使用cardList.add(new Card()); ,当我尝试使用Card(i)设置名称时,java不会让我这样做。 使用它没有我工作正常,但我如何访问它所以我可以调用其他方法,如setId。 我想调用cardName.setId();

在循环之前创建数组,并在循环填充它。 最好使用ArrayList。

 List cardList = new ArrayList(); for (i = 0; i < MAX_CARD; i++) { cardList.add(new Card()); // or new Card(i) as the case may be } 

如果你正在填写一副牌,并且你的套装和等级枚举很好,那么:

 List cardList = new ArrayList(); for (Suit suit: Suit.values()) { for (Rank rank: Rank.values()) { cardList.add(new Card(suit, rank)); } } 

编辑
你在评论中说:

所以我使用的是cardList.add(new Card()); ,当我尝试使用Card(i)设置名称时,java不会让我这样做。 使用它没有我工作正常,但我如何访问它所以我可以调用其他方法,如setId。 我想调用cardName.setId();

Card(i)没有意义,因为你不能把卡类看作是一种方法 - 再次我甚至不知道该怎么做,你在这里尝试做什么。 如果需要从ArrayList中提取Card,则需要在ArrayList上调用get(...)方法,此处称为cardList 。 更好的方法是在我的第二个代码片段中显示其构造函数中的Card属性。

在Java中,必须在编译时知道变量名。 即使在其他语言(如JavaScript)中,如果不是这样,最好不要尝试在运行时动态创建变量。

这正是数组要解决的问题:当你有一个已知类型的项目,但在编译时有未知的数量。 您需要将卡声明为arrays: Card[] cards

 Card[] cards = new Card[13]; for (int i = 0; i < cards.length; i++) { cards[i] = new Card(); } 

注意我将for循环更改为循环到cards.length,这是在运行时计算出来的,因此13不必在两个地方进行硬编码。