2014-02-14 138 views
1

我是新來的編碼和我有這個問題的任何幫助表示讚賞。編碼蝙蝠運動BMIResult

這是問題所在。

給定一個人的英寸身高和體重以磅爲單位,計算他們的BMI。 BMI計算爲BMI =(體重* 703)/(身高*身高)然後,根據他們的BMI,如果它小於18.5,則返回一條消息,指出「您的體重不足」。如果它至少不超過26,返回一條消息,說「你的體重是健康的。」如果它是26或更多,則返回一條消息,指出「您超重」。

BMIResult(177,69)→「你超重。」

BMIResult(125,62)→「你的體重是健康的。」

BMIResult(95,64)→「你體重不足。」提示:將您的BMI計算舍入到小數點後一位。確保消息返回完全如顯示。

我做錯了什麼!這是我得到的錯誤。

錯誤:公共字符串BMIResult(雙重,雙倍高度){

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ 此方法必須返回字符串類型的結果

可能的問題:if語句結構理論上可能允許運行在不調用return的情況下到達方法的結尾。 考慮在方法中添加最後一行return some_value; 所以總是返回一個值。

這裏是我的代碼,上面得到錯誤信息:

public String BMIResult(double weight,double height) { 
double bmi=((weight*703)/(height*height)); 

if (BMI<18.5) 

    return "You are underweight."; 

if (BMI>18.5 && BMI<26) 

    return "Your weight is healthy."; 

if (BMI>=26) 

    return "You are overweight."; 



} 

即使我嘗試從一個雙重轉換爲字符串這是行不通的。

+1

你不處理BMI = = 18.5的情況下,BTW。 –

回答

1

您應該嘗試使用else,編譯器不知道您的當前條件之一必須評估爲true(因爲發佈時它們都是獨立和未連接的語句)。

public String BMIResult(double weight,double height) { 
    double bmi=((weight*703)/(height*height)); 
    if (BMI<18.5) { 
    return "You are underweight."; 
    } else if (BMI<26) { // BMI>=18.5 not needed, or the first if would be entered. 
    return "Your weight is healthy."; 
    } else { // <-- you might omit this else entirely, and end the method 
    return "You are overweight."; // <-- with this 
    } 
} 
+0

謝謝你工作! – sciontoygirl

0

編譯器不知道你的代碼將執行你的if語句之一的代碼。你必須在所有if的結尾處有一個回報,或者在最後寫一個else。

1

這裏有一個工作版本:

public class BMI { 

    public String calculateBMI(double weight, double height) { 
     double bmi = ((weight * 703)/(height * height)); 

     if (bmi < 18.5) { 
      return "You are underweight."; 
     } 
     if (bmi < 26) { 
      return "Your weight is healthy."; 
     } 

     return "You are overweight."; 
    } 

    public static void main(String[] args) { 
     System.out.println(new BMI().calculateBMI(95, 64)); 
    } 
} 

與原代碼的問題是,如果沒有IFS的執行變量bmi的名稱和缺少return語句。事實上,這種情況(幾乎)不可能發生,但編譯器不夠聰明。

此外,不需要執行許多您正在進行的檢查,因爲如果前面的if語句失敗,它們在邏輯上必須自動爲真。同樣,最後的if也不需要,因爲如果執行達到了這一點,那麼這個人顯然是超重的。

在Java中有命名約定,例如方法總是以小寫字符開頭。我已將BMIResult()方法重命名爲calculateBMI()。雖然,很多人會鼓勵你寫calculateBmi(),因爲這更符合現代風格。

1

問題是,如果兩個條件都不滿足,則不會返回任何內容。

用途:

public String BMIResult(double weight,double height) { 
double bmi=((weight*703)/(height*height)); 

if (BMI<18.5) 

    return "You are underweight."; 

if (BMI>18.5 && BMI<26) 

    return "Your weight is healthy."; 

if (BMI>=26) 

    return "You are overweight."; 

return ""; //add something. 


}