当前位置: 首页 > 知识库问答 >
问题:

我如何创建一个新的对象从一个类使用for循环在java?

聂宜
2023-03-14

我有一个名为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();
}

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

谢谢

所以我正在使用气垫船充满鳗鱼的解决方案,但我还有另一个问题。

我用的是卡片列表。添加(新卡()),当我尝试使用Card(I)设置名称时,java不允许我这么做。在没有i的情况下使用它可以很好地工作,但是我如何访问它,以便可以对其调用另一个方法,例如setId。我想叫cardName。setId();

共有2个答案

龙新荣
2023-03-14

在Java中,必须在编译时知道变量名。即使在JavaScript等其他语言中,也不应该尝试在运行时动态创建变量。

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

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

注意,我把for循环改成了cards循环。长度,这是在运行时计算出来的,因此13不必在两个位置都进行硬编码。

段铭晨
2023-03-14

在循环之前创建数组,并在循环内部填充。不过最好使用ArrayList。

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

如果你正在填充一副牌,并且你已经很好地创建了你的套装和等级枚举,那么:

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

编辑你在评论中的陈述:

所以我用的是卡片列表。添加(新卡()),当我尝试使用Card(I)设置名称时,java不允许我这么做。在没有i的情况下使用它可以很好地工作,但是我如何访问它,以便可以对其调用另一个方法,例如setId。我想打电话给cardName。setId();

Card(i)没有意义,因为你不能把Card类当作一种方法来对待——同样,我甚至不知道如何利用它,你在这里想做什么。如果需要从ArrayList中提取卡片,则需要调用get(…)方法,这里称为cardList。更好的做法是在其构造函数中设置卡片属性,如我在第二段代码中所示。

 类似资料:
  • 我对编程有点陌生,我被卡住了。假设我在一个项目中有五个不同的类:foo1、foo2、foo3、foo4和foo5,它们都做不同但相似的事情。现在假设我需要为每个对象创建一个新对象,比如:foo1 bar1=new foo1();foo2 bar2=新的foo2();foo3 bar3=新的foo3();等等当然这是可行的,但如果我能在一个for循环中实例化我需要的所有对象,或者至少把我想要创建的所

  • 我一直在使用JavaScript代码进行自动GUI测试。我一直在进行全面的测试,并优化了一些代码。例如,我有一个函数可以将值输入到窗口的所有字段中,该窗口大致如下所示: 最初输入函数看起来是这样的:这是相当笨拙的,占用了很多空间,不如编辑函数以接受一个将字段作为属性值的对象那样整洁。现在函数看起来像这样:其中是这样定义的: 在我进入测试一个特殊需求的部分之前,这一直工作得很好,该需求说明当您在窗口

  • 问题内容: 假设您必须在python中创建10个类对象,并对其进行处理,例如: 您将如何循环处理,并为每个对象分配一个变量(如),从而使代码更短?每个对象都可以在循环外部访问 问题答案: 每天都会以不同的方式询问这个问题。答案是:将数据放在变量名之外,这是必填的博客文章。 在这种情况下,为什么不列出objs?

  • 我正在做一个游戏,有三个骰子方块,点击一个按钮就会显示出随机的面孔。图像由css图像精灵生成。如果随机数为1,则骰子立方体将分配给具有图像精灵的css类。 我有一个单独的按钮,当点击它时,应该运行上面的diceroll功能到三个div,ID为dice1、dice2和dice3。 我想用 我研究了一下,但找不到实现最后两行注释代码的方法。请让我知道我的方法是否正确,并帮助我与代码。

  • 我正在进行一些考试修改工作,创建了一个Employee抽象类和两个扩展到Employee类的其他类(AcademyicEmployee和ProfessionalEmployee)。 我在Employee类中设置了一个公共静态void main来运行这些行: 我知道您不能实例化一个抽象类,并且创建的实际对象是“new”关键字之后的任何内容,但为什么允许我这样做: 我想它的工作方式是“数据类型”然后“

  • 我需要根据数据库查询的结果集创建可变数量的JSON对象和JSON数组。JSON格式看起来与以下用于谷歌图表的格式非常相似。 我的问题是,我觉得这应该是一个简单的答案,如何在for循环中创建多个具有唯一名称的JSON对象?我的尝试: