gpt4 book ai didi

java - 是否可以通过增强的 for 循环来初始化数组中的对象?

转载 作者:行者123 更新时间:2023-12-02 04:57:44 24 4
gpt4 key购买 nike

在下面(错误的)代码中,我想初始化数组 cards 中包含的对象来创建一副牌。有没有办法通过增强的 for 循环来做到这一点,或者我可以使用“标准”for 循环?

cards = new Card[SUITS][RANKS];

for(Card[] suit : cards) {
for(Card card : suit) {
card = new Card(suitVar, rankVar);
}
}

最佳答案

不,这是不可能的,因为增强的 for 循环将提供对当前元素的引用。将新对象分配给引用不会将元素分配给数组。使用数组访问表达式将元素分配给数组是无可替代的。

您可以使用两个“传统”for 循环和数组访问表达式来初始化数组。

for (int s = 0; s < SUITS; s++)
for (int c = 0; c < RANKS; c++)
cards[s][c] = new Card(...);

可以使用数组初始值设定项,但它会很乏味、过于冗长且容易出错。

cards = new Card[][] {
{new Card(...), new Card(...), ... },
{new Card(...), new Card(...), ... },
...};

有趣的是,由于二维数组是作为数组的数组实现的,并且使用了数组引用,因此可以使用增强的 for 循环来初始化外部数组,如下所示只要使用“传统”循环初始化内部数组即可。这是可行的,因为 suitcards 中的数组,因此 suit[c​​]cards 中的元素。

cards = new Card[SUITS][RANKS];

for(Card[] suit : cards) {
for(int c = 0; c < RANKS; c++) {
suit[c] = new Card(suitVar, rankVar);
}
}

关于java - 是否可以通过增强的 for 循环来初始化数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com