آخر

لا يمكن إلغاء الإشارة إلى مضاعفة Mac [Java]

د

ديف تايلور

ملصق أصلي
6 نوفمبر 2007
أبردينشاير ، اسكتلندا
  • 25 يناير 2010
الكود: 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

13 أغسطس 2002


شيكاغولاند
  • 25 يناير 2010
هل يمكنك نشر الخطأ الفعلي؟ لماذا هو بيان العودة الخاص بك قبل نهاية طريقتك؟ س

ستانل 8

24 ديسمبر 2009
مانشستر ، المملكة المتحدة
  • 25 يناير 2010
بادئ ذي بدء ، يجب أن تحاول
العودة ('' + مؤشر كتلة الجسم) ؛
أي أن عامل التشغيل '+' سينفذ التسلسل.

ثانيًا ، لا أفهم متى سيتم تنفيذ عبارات if لأن لديك عبارة إرجاع أعلاه سيتم تنفيذها دائمًا د

ديف تايلور

ملصق أصلي
6 نوفمبر 2007
أبردينشاير ، اسكتلندا
  • 25 يناير 2010
قال iShater: هل يمكنك نشر الخطأ الفعلي؟ لماذا هو بيان العودة الخاص بك قبل نهاية طريقتك؟ انقر فوق لتوسيع...

لا يمكن إلغاء الإشارة إلى الخطأ الفعلي هو الخطأ المزدوج.

Cromulent

2 أكتوبر 2006
أرض الأمل والمجد
  • 25 يناير 2010
بادئ ذي بدء ، تعود قبل أن تضغط على عبارات if .. else الخاصة بك مما يعني أنه لن يتم الاتصال بهم أبدًا.

ثانيًا ، تُرجع طريقتك ضعفًا ولكنك تحاول إرجاع سلسلة في عبارات if .. else.

ثالثًا ، عند استدعاء طريقة toString () ، تحتاج إلى استخدام الكائن 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

الوسيط
موظف
9 أغسطس 2009
الطائرة السحيقة
  • 25 يناير 2010
قال DaveTaylor: الخطأ الفعلي هو ضعف لا يمكن إلغاء الإشارة إليه. انقر فوق لتوسيع...

أولاً ، لا يمكنك فعل هذا:
الكود: ... BMI.toString ...
لأنه تم إعلان مؤشر كتلة الجسم كـ مزدوج ، النوع البدائي. Java لا تقوم بعمل autoboxing في هذه الحالة ، على ما أذكر.

إذا تم التصريح عن مؤشر كتلة الجسم باسم مزدوج ، فئة الغلاف للنوع البدائي ، فقد تنجح ...

باستثناء أنه لا يمكنك القيام بذلك:
الكود: ... someObject.someMethod ...
لأن Java لا تضيف لك تلقائيًا (). إذا كنت تريد استدعاء التابع toString على كائن ما ، فعليك كتابته كاستدعاء عملية:
الكود: ... anyObject.toString() ...
إذا كنت لا تستخدم برنامجًا تعليميًا أو كتابًا ، فيجب أن تفعل ذلك حقًا.

1210

10 يناير 2005
دالاس ، تكساس
  • 25 يناير 2010
أردت فقط أن أضيف إلى الملاحظات الجيدة التي تم إجراؤها حتى الآن من خلال اقتراح استخدام طريقة java.lang.String's valueOf (المزدوجة). يمكنك تشغيل هذا واستعادة السلسلة. يعمل استخدام عامل التشغيل String + double أيضًا بشكل جيد ، ولكنه ليس ضروريًا إذا كان كل ما تريده هو تمثيل السلسلة للنوع المزدوج.

-يقرأ ج

سي اكس 300

12 سبتمبر 2008
كليرمونت ، فلوريدا
  • 25 يناير 2010
جافا الخاصة بي صدئة قليلاً ولكن هذا يجب أن يكون صحيحًا ...

الكود: 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

الوسيط
موظف
9 أغسطس 2009
الطائرة السحيقة
  • 25 يناير 2010
قال cx300: جافا خاصتي صدئة قليلاً لكن هذا يجب أن يكون صحيحًا ...

الكود: 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.

لا أعتقد أن هذه المشكلة خاصة بجافا. ستواجه مشاكل مماثلة في لغة C ، والتي لها قواعد متشابهة في الحساب الصحيح والمزدوج.