我希望你能帮我一点:
var characters1 = [Character]()
func selectCharacterScreen1() {
var name: String = ""
var error: Bool = false
repeat {
if error == true {
print("Please type a valid character's name. His name must be unique.")
}
else {
print("Please type an unique character's name")
}
name = inputString()
error = false
for c in characters1 {
if c.nameCharacter == name {
error = false
break
}
}
} while error == true
}
我希望代码必须检查角色的名字是否都是唯一的。如果不是,代码必须拒绝,并且用户必须重新输入另一个角色的名字。在此代码中,您可以键入角色的名称,但代码并不关心角色的名称是否唯一。
最佳答案
首先,列表应该包含字符串,而不是字符,其次,您的代码在这里非常不清楚:
repeat {
if error == true {
print("Please type a valid character's name. His name must be unique.")
}
else {
print("Please type an unique character's name")
}
name = inputString()
error = false
for c in characters1 {
if c.nameCharacter == name {
error = false
break
}
}
} while error == true
你的 error = false 的想法有一个根本性的缺陷(在 for 循环中)。如果名称匹配为非唯一,则应将错误设置为 true。
如果您只想输入一个名称并检查该名称是否已在 Characters1 列表中,则将 for 循环更改为如下所示:
for c in characters1 {
if c == name {
error = true # it has to set error to true so the for loop rejects the name and restarts
break
}
}
if error == false {
characters1.append(name)
}
此代码应该适用于一名玩家。如果您想输入 3 个名称,请将整个重复循环放入 for 循环中,如下所示:
var characters1 = [String]()
func selectCharacterScreen1() {
var name: String = ""
var error: Bool = false
for x in 1...3{
repeat {
if error == true {
print("Please type a valid character's name. His name must be unique.")
}
else {
print("Please type an unique character's name")
}
name = inputString
error = false
for c in characters1 {
if c == name {
error = true
break
}
}
if error == false {
characters1.append(name)
}
} while error == true
}
}
我尝试过这个,它对我有用。如果不明白请告诉我
关于arrays - 如何创建具有唯一 "character names"的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46952440/