arrays - 如何创建具有唯一 "character names"的数组?

标签 arrays swift unique

我希望你能帮我一点:

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/

相关文章:

java - 存储非常大的数组

java - 使用数组生成两个随机值

ios - Alamofire Swift 4 无聊的 SSL

matlab - 如何找到矩阵每一行中唯一元素的数量?

r - 在数据框变量中查找唯一字符串

arrays - 构建对象的Json对象并将其写入文件

java - 新手遇到数组问题

ios - 当我结合 UIPanGestureRecognizer 和自动布局时,我的 UIViews 搞砸了

ios - Swift 中的非可选类型不应该包含可选类型吗?

删除重复的列值