2017-07-27 65 views
0

我想創建一個BMI計算器,它將用戶的身高和體重作爲輸入,然後計算他們的BMI;從那裏,它使用一系列if-else語句向用戶返回一條消息,指出他們是否健康/超重/減肥。我沒有問題讓程序返回計算的BMI值;但是當我合併if-else語句時,我得到「無法將類型'String'的返回表達式轉換爲返回類型'Float'」錯誤。Xcode「無法將類型'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)) 
+0

'bodyMassIndex'想返回'String',但你回來'Float'。 '返回userBMI'。使其返回字符串,如'return String(userBMI)'。 – Ryan

+2

在檢查userBMI的值之前,從函數*返回有什麼意義? –

+0

此代碼的實際錯誤消息是「不能將類型'Float'的返回表達式轉換爲返回類型'String'」 - 這是*不是*您在標題中寫的內容。 –

回答

0

你只需要的userBMIFloat值包裝成一個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" 

    } 
} 
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 
相關問題