gpt4 book ai didi

arrays - 当我希望用户不要用相同的名字命名他/她选择的角色时,要实现什么控制流程?

转载 作者:行者123 更新时间:2023-11-28 05:50:58 24 4
gpt4 key购买 nike

我对编码很陌生,所以简单的任务就像珠穆朗玛峰一样。我创建了一个 Switch 语句,让玩家从 4 个角色中选择 3 个来玩。我希望他/她给他们的角色起一个独特的名字。我尝试在方法中添加一个“参数 [String]”,并在其中添加每个字符的名称,使用“for Loop”检查字符是否已经以这种方式命名。问题是我一直在循环, 无法弄清楚如何给每个角色唯一地命名。如果有人有任何线索,感谢回答。

func makeTheTeam(listOfName: [String]) {

var listOfName = listOfName

// Presents all the fighter available
gameAction.charactersPresentation()

while listOfFighters.count < 3 {

print("\nInput a number associated to select a fighter:")
if let userChoice = readLine() {

print("Name your fighter:")
if let nameChoice = readLine() {

switch userChoice {
case "1":
listOfFighters.append(Warrior(fighterName: "\(nameChoice)"))
case "2":
listOfFighters.append(Wizard(fighterName: "\(nameChoice)"))
case "3":
listOfFighters.append(Colossus(fighterName: "\(nameChoice)"))
case "4":
listOfFighters.append(Dwarf(fighterName: "\(nameChoice)"))
default:
print("You have not chosen three characters to enter the ring!! \n\nEnter a number associated to a fighter...")
}
}
}
}
}

最佳答案

要摆脱“唯一”名称问题,您可以:

1- 通过将 listOfName 转换为 set 并检查计数,获得使用 Set 的好处:

if Set(listOfName).count == listOfName.count {
// unique names, we are good to go
} else {
// similar names...
}

2- 如果您想要的行为是在添加每个元素后按顺序检查数组,您可以使用 contains。作为它的基本用法的示例:

var names = [String]()
var inputName = "Jack"

// will append "Jack"
if names.contains(inputName) {
// name is already exist
} else {
names.append(inputName)
}

inputName = "Smith"

// will append "Smith"
if names.contains(inputName) {
// name is already exist
} else {
names.append(inputName)
}

inputName = "Smith"

// will NOT append "Jack"
if names.contains(inputName) {
// name is already exist
} else {
names.append(inputName)
}

提示:

如果 makeTheTeam 函数应该接收不特定数量的字符串,我建议将其声明为variadic:

func makeTheTeam(listOfName: String...) { // ...

关于arrays - 当我希望用户不要用相同的名字命名他/她选择的角色时,要实现什么控制流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52973112/

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