DaveTaylor
オリジナルポスター- 2007年11月6日
- スコットランド、アバディーンシャー
- 2010年1月25日
public double calcBMI() { double BMI; BMI = weight / (height * height); return BMI; if (BMI >=30) { return BMI.toString + 'Obese'; } else if (BMI >=25) { return BMI.toString + 'Overweight'; } else if (BMI >=18.5) { return BMI.toString + 'Normal Weight'; } else { return BMI.toString + 'Underweight'; } }
ヘルプ?笑
iShater
- 2002年8月13日
- シカゴランド
- 2010年1月25日
stanl8
- 2009年12月24日
- マンチェスター、英国
- 2010年1月25日
リターン( '' + BMI);
つまり、「+」演算子は連結を実行します。
次に、上記のreturnステートメントが常に実行されるため、これらのifステートメントがいつ実行されるかがわかりません。 NS
DaveTaylor
オリジナルポスター- 2007年11月6日
- スコットランド、アバディーンシャー
- 2010年1月25日
iShaterによると:実際のエラーを投稿できますか?メソッドが終了する前にreturnステートメントを使用するのはなぜですか? クリックして展開...
実際のエラーはdoubleであり、逆参照することはできません。
群衆
- 2006年10月2日
- 希望と栄光の国
- 2010年1月25日
次に、メソッドはdoubleを返しますが、if ..elseステートメントで文字列を返そうとしています。
3番目に、toString()メソッドを呼び出すときは、プリミティブ型ではなくオブジェクトDoubleを使用する必要があります。したがって、BMIをdoubleではなくDouble(java.lang.Double)として宣言する必要があります。
簡単な例を次に示します。
コード:
public class Main { public static void main(String[] args) { Double test; test = 0.843; String test_string = test.toString(); System.out.println(test_string); System.out.println(test); } }
chown33
モデレータ
スタッフ- 2009年8月9日
- 深海平原
- 2010年1月25日
DaveTaylorは次のように述べています。実際のエラーは2倍であり、逆参照することはできません。 クリックして展開...
まず、これを行うことはできません:
コード:
... BMI.toString ...
BMIは次のように宣言されているため ダブル 、プリミティブ型。私が覚えているように、Javaはこの状況ではオートボクシングを実行しません。
BMIが次のように宣言された場合 ダブル 、プリミティブ型のラッパークラスの場合、機能する可能性があります。
あなたがこれをすることができないことを除いて:
コード:
... someObject.someMethod ...
Javaは自動的に()を追加しないためです。オブジェクトに対してtoStringメソッドを呼び出す場合は、メソッド呼び出しとして記述する必要があります。
コード:
... anyObject.toString() ...
チュートリアルや本を使用していない場合は、実際に使用する必要があります。
lee1210
- 2005年1月10日
- テキサス州ダラス
- 2010年1月25日
-読んだ NS
cx300
- 2008年9月12日
- フロリダ州クレルモン
- 2010年1月25日
コード:
public String calcBMI(int height, int weight) { double BMI; BMI = (weight / (height * height)); String str = ; if (BMI >=30) { str = (Double.toString(BMI) + Obese); return str; } else if (BMI >=25) { str = (Double.toString(BMI) + Overweight); return str; } else if (BMI >=18.5) { str = (Double.toString(BMI) + Normal Weight); return str; } else { str = (Double.toString(BMI) + Underweight); return str; } }
chown33
モデレータ
スタッフ- 2009年8月9日
- 深海平原
- 2010年1月25日
cx300によると:私のJavaは少し錆びていますが、これは正しいはずです...
コード:public String calcBMI(int height, int weight) { double BMI; BMI = (weight / (height * height));
クリックして展開...
計算が(重量/(質量*質量))で、他の係数がない場合、高さの単位はメートル、質量(重量)の単位はキログラムです。高さが整数メートル(1、2、3)しか取れない場合は、深刻な精度の問題があります。
http://en.wikipedia.org/wiki/Body_mass_index
また、計算は完全に整数演算(つまり、除算の切り捨て)で実行されるため、これらのタイプは結果に小数値を生成しません。その後、整数の結果はdoubleに変換されます。小数部の可能性があるdouble計算が必要な場合は、少なくとも1つのオペランドがdouble型である必要があります。
この問題はJavaに固有のものではないと思います。整数演算と二重演算のルールが似ているCでも同様の問題が発生します。
人気の投稿