我想在一个数组中存储单词,然后调用其中一个单词

时间:2014-08-01 16:16:35

标签: xcode swift

为什么当我在array中存储单词时,我无法仅仅根据我存储的其中一个单词进行调用。我会举一个例子来说明我的意思。这是我正在进行的游戏的一个例子。我正在使用Swift在Xcode的Playground中执行此操作。

     var miamiHeat = ["james", "wade", "mario", "allen", "bosh"]
     var questionOne = "Can you name one player from the miami heat?"
     var answerToQuestionOne = ["james", "wade", "mario", "allen", "bosh"]        

     func testIfCorrect(answerToQuestionOne: String) -> String {
     if miamiHeat == answerToQuestionOne {
     println("The answer is correct")

     } else {
     println("The answer is incorrect")
     }      
     return answerToQuestionOne

     }
     println(testIfCorrect("James"))

它打印的唯一方式"答案是正确的"如果我在最后println代码中输入所有玩家的名字。当我输入其中一个玩家名称到println代码时,它返回"答案是错误的。"我只需输入其中一个名称就可以得到正确的答案.....所以我该怎么做?谢谢。

2 个答案:

答案 0 :(得分:2)

您正在将字符串与数组进行比较,而不是检查字符串是否等于数组中的任何字符串。

您需要循环遍历数组中的所有元素,并检查每个元素的相等性。

此外,在这里println(testIfCorrect("James")),你有一个大写" J",而在名字数组中它是小写的(比较是区分大小写的)。

我修改了你的代码:

var miamiHeat = ["james", "wade", "mario", "allen", "bosh"]
    var questionOne = "Can you name one player from the miami heat?"
    var answersToQuestionOne = ["james", "wade", "mario", "allen", "bosh"]

func testIfCorrect(answerToQuestionOne: String) -> String {
    var correctAnswer: Bool = false
    for answer in miamiHeat {
        if answer == answerToQuestionOne {
            correctAnswer = true
        }
    }
    if correctAnswer {
        println("The answer is correct")

    } else {
        println("The answer is incorrect")
    }
    return answerToQuestionOne

}
println(testIfCorrect("james"))

答案 1 :(得分:0)

我认为问题是因为你将整个结构miamiheat与answerToQuestionOne进行比较。要解决此问题,您可以添加一个switch语句来检查miamiheat的每个可能值。这个网站的例子很少:

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html