我正在尝试创建一个BMI计算器,它以用户的身高和体重作为输入,然后计算他们的BMI;从那里,它使用一系列if - are语句向用户返回一条消息,该消息表明他们是否健康/超重/体重不足。我没有问题让程序返回计算出来的BMI值;但是当我合并if-else语句时,我会得到“无法将'String‘类型的返回表达式转换为返回类型’Float‘’”错误。
下面是我的代码(到目前为止,我只做了一次if-far语句):
import UIKit
func bodyMassIndex (userHeight : Float, userWeight : Float) -> String {
let userHeightSquared = (userHeight*userHeight)
let userWeight = userWeight
let userBMI = (userWeight/userHeightSquared)
return userBMI
if userBMI > 25 {
return "Overweight"
}
}
print(bodyMassIndex (userHeight : 1.82, userWeight: 90.7))发布于 2017-07-27 21:42:00
您只需将userBMI的userBMI值包装到String中即可。
func bodyMassIndex (userHeight : Float, userWeight : Float) -> String {
let userHeightSquared = (userHeight*userHeight)
let userWeight = userWeight
let userBMI = (userWeight/userHeightSquared)
return String(userBMI)
if userBMI > 25 {
return "Overweight"
}
}发布于 2017-07-27 21:53:58
在这里,您的逻辑看起来有点混乱:
return userBMI
if userBMI > 25 {
return "Overweight"
} 你的职责是什么?返回BMI数字,还是描述性字符串?(它试图两者兼而有之,而编译器却不高兴)
如果我是一个用户,我希望看到数字和关于它的含义的声明-所以您需要两个函数:
func bodyMassIndex (userHeight : Float, userWeight : Float) -> String {
let userHeightSquared = (userHeight*userHeight)
let userWeight = userWeight
let userBMI = (userWeight/userHeightSquared)
return userBMI
}
func bodyMassDiagnosis (bodyMassIndex : Float) {
if userBMI > 25 {
return "Overweight"
}
return "You're doing fine"
} 然后:
let bodyMassIndex = bodyMassIndex(height, weight)
let diagnosis = bodyMassDiagnosis(bodyMassIndex)
self.indexLabel.text = "BMI \(bodyMassIndex)"
self.diagnosisLabel.text = diagnosishttps://stackoverflow.com/questions/45361430
复制相似问题