Xcode"无法转换类型' String'的返回表达式返回类型' Float'"

时间:2017-07-27 21:37:21

标签: ios swift

我正在尝试创建一个BMI计算器,将用户的身高和体重作为输入,然后计算他们的BMI;从那里开始,它使用一系列if-else语句向用户返回一条消息,告知用户是否健康/过度/不足。我没有问题让程序返回计算出的BMI值;但是当我合并if-else语句时,我得到了"无法转换类型' String'的返回表达式。返回类型' Float'"错误。

这是我的代码(到目前为止,我只做了一个if-else语句):

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))

2 个答案:

答案 0 :(得分:1)

你的逻辑在这里看起来有点困惑:

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 = diagnosis

答案 1 :(得分:0)

您只需将Float的{​​{1}}值包装到userBMI

String