在一个包含 27 个字符串的数组中创建一个包含 9 个唯一字符串的新数组
In an array of 27 strings make a new array of 9 unique strings
我正在努力解决以下问题。我正在为我的学习制作纸牌游戏集,我目前正处于拥有制作所有纸牌并将它们放入 27 个字符串的数组中的功能的地步。接下来,我创建了一个新函数,它将此数组作为参数,遍历它并 returns 一个包含 9 个独特的新字符串(卡片)的新数组。这必须是随机的。
我的想法是,每次我从 27 个字符串数组中选择一个字符串时,我都会用一个空字符串替换这个字符串。游戏结束时,这个数组有27个空串,不能发牌
我的问题是:有了这个想法,我怎样才能防止在这个由 9 张独特卡片组成的新阵列中出现重复。来自学校和工作的提示:用你的随机范围做点什么。
所以基本上:当 for 循环选择“”时,它必须跳过这个,以便我在新数组中有 9 张独特的卡片。
在处理中完成 (java)。
这是我的代码:
String[] onScreen(String[] cards) {
String[] cardsToPlay = new String[9];
int index = 0;
int lengthArray = cards.length;
for(int i = 0; i < cardsToPlay .length; i++) {
int randomCard = int(random(lengthArray));
cardsToPlay[index] = kaarten[randomCard];
index++;
lengthArray--;
kaarten[randomCard] = "lege string";
}
return cardsToPlay ;
}
我建议从数组中删除随机卡kaarten
。
使用函数shorten()
可以将数组的大小减1。最后一个元素将从数组中删除。
如果从牌堆中选择了 random
张牌,则将这张牌与牌堆中的最后一张牌交换:
String lastCard = kaarten[kaarten.length-1];
kaarten[kaarten.length-1] = kaarten[randomCard];
kaarten[randomCard] = lastCard;
现在最后一张牌就是被选中的那张牌。从牌堆中取出最后一张牌:
kaarten = shorten(kaarten);
函数 onScreen
可能如下所示:
String[] onScreen() {
String[] cardsToPlay = new String[9];
for (int i = 0; i < cardsToPlay.length; i++) {
int randomCard = int(random(kaarten.length));
cardsToPlay[i] = kaarten[randomCard];
String lastCard = kaarten[kaarten.length-1];
kaarten[kaarten.length-1] = kaarten[randomCard];
kaarten[randomCard] = lastCard;
kaarten = shorten(kaarten);
}
return cardsToPlay ;
}
对您来说更好的选择是 运行 循环 9 次迭代。生成 1-27 之间的随机数,并从数组中检索该索引处的值并将其添加到集合中(以具有唯一值)。 set 的矩长度达到 9 时打破循环。稍后将集合转换为包含 9 个元素的数组 an
我正在努力解决以下问题。我正在为我的学习制作纸牌游戏集,我目前正处于拥有制作所有纸牌并将它们放入 27 个字符串的数组中的功能的地步。接下来,我创建了一个新函数,它将此数组作为参数,遍历它并 returns 一个包含 9 个独特的新字符串(卡片)的新数组。这必须是随机的。
我的想法是,每次我从 27 个字符串数组中选择一个字符串时,我都会用一个空字符串替换这个字符串。游戏结束时,这个数组有27个空串,不能发牌
我的问题是:有了这个想法,我怎样才能防止在这个由 9 张独特卡片组成的新阵列中出现重复。来自学校和工作的提示:用你的随机范围做点什么。
所以基本上:当 for 循环选择“”时,它必须跳过这个,以便我在新数组中有 9 张独特的卡片。
在处理中完成 (java)。
这是我的代码:
String[] onScreen(String[] cards) {
String[] cardsToPlay = new String[9];
int index = 0;
int lengthArray = cards.length;
for(int i = 0; i < cardsToPlay .length; i++) {
int randomCard = int(random(lengthArray));
cardsToPlay[index] = kaarten[randomCard];
index++;
lengthArray--;
kaarten[randomCard] = "lege string";
}
return cardsToPlay ;
}
我建议从数组中删除随机卡kaarten
。
使用函数shorten()
可以将数组的大小减1。最后一个元素将从数组中删除。
如果从牌堆中选择了 random
张牌,则将这张牌与牌堆中的最后一张牌交换:
String lastCard = kaarten[kaarten.length-1];
kaarten[kaarten.length-1] = kaarten[randomCard];
kaarten[randomCard] = lastCard;
现在最后一张牌就是被选中的那张牌。从牌堆中取出最后一张牌:
kaarten = shorten(kaarten);
函数 onScreen
可能如下所示:
String[] onScreen() {
String[] cardsToPlay = new String[9];
for (int i = 0; i < cardsToPlay.length; i++) {
int randomCard = int(random(kaarten.length));
cardsToPlay[i] = kaarten[randomCard];
String lastCard = kaarten[kaarten.length-1];
kaarten[kaarten.length-1] = kaarten[randomCard];
kaarten[randomCard] = lastCard;
kaarten = shorten(kaarten);
}
return cardsToPlay ;
}
对您来说更好的选择是 运行 循环 9 次迭代。生成 1-27 之间的随机数,并从数组中检索该索引处的值并将其添加到集合中(以具有唯一值)。 set 的矩长度达到 9 时打破循环。稍后将集合转换为包含 9 个元素的数组 an