为什么当我在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
代码时,它返回"答案是错误的。"我只需输入其中一个名称就可以得到正确的答案.....所以我该怎么做?谢谢。
答案 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的每个可能值。这个网站的例子很少: