问题描述
我正在尝试运行此代码,但它不起作用。我不知道如何将输入 j 作为字符串返回。 这是错误 /tmp/D2FFE31F-B533-48DF-AC15-F1EA8A029FCF.q0h9za/main.swift:15:1:错误:预期返回“字符串”的函数中缺少返回
func FizzBuzz(j:Int) -> String {
if j % 5 == 0 && j % 3 == 0 {
return "FizzBuzz"
}
else if j % 3 == 0 {
return "Buzz"
}
else if j % 5 == 0 {
return "Fizz"
}
}
for i in 0...100 {
print(FizzBuzz(j:i))
}
解决方法
除了@rob mayoff 的回答之外,问题还在于您必须 return
在该函数中包含一个字符串,因为您是这么说的:
// must return a String
func FizzBuzz(j:Int) -> String {
所以看看你的函数。如果 j
不能被 5 或 3 整除怎么办?您的代码只会通过 if else
,并且不会调用任何 return
。
要解决这个问题,只需在函数结束时返回即可。
func FizzBuzz(j:Int) -> String {
if j % 5 == 0 && j % 3 == 0 {
return "FizzBuzz"
} else if j % 3 == 0 {
return "Buzz"
} else if j % 5 == 0 {
return "Fizz"
}
return "\(j)" /// return the number
}
,
Swift 字符串有一个名为 “string interpolation” 的特性。当字符串包含字符 \(
后跟某个表达式后跟 )
时,Swift 会计算(运行)该表达式并将结果转换为字符串,并将该结果字符串替换为封闭字符串。例如:
"two plus three is \(2 + 3)"
上面,Swift 计算 2 + 3
,得到 Int
5
,然后将 Int
5
转换成字符串 "5"
,然后替换进入封闭的字符串,得到 "two plus three is 5"
。
因此将 j
作为字符串返回的一种方法是使用这样的字符串插值:
return "\(j)"
,
简短回答:“if”语句总是需要一个“else”来返回结果。
您有 3 个 if/else if 语句,但如果这些语句失败,则没有最后的“else”。
您需要添加其中之一
else {
return “”
}
或者只是一个决赛
return “”