Java - What is the problem in my code ?
ممّا قرأت في التوجيهات، يجب عليك أن تنشأ updatBalance وتخزن فيه قيمة balance مطروحاً منها قيمة amountToWithdraw ممّا يعني أنه يجب عليك ان تعدّل السطر 5 ليصبح:
double updateBalace = balance - amountToWithdraw
بدلاً من السطر الموجود حالياً لأن السطر حالياً يقوم بإرجاع متغير بولياني صح أو خطأ بسبب إشارة المساواة (==) وهذا هو تفسير الخطأ، لا يمكنك أن تحوّل قيمة bool إلى double.
إن حل المشكلة كما تفضلت حسب الدورة التي تتابعها هي تخزين قيمة الطرح بين المتحولين أي:
double updateBalace = balance - amountToWithdraw // Double
حيث نمط الإعادة في هذه الحالة هو Double
وليس قيمة المقارنة (==) التي تعيد قيمة Boolean وهو سبب الخطأ الذي حدث.
بشكل عام نحن لانستخدم معامل المقارنة (==) للتأكد من تساوي قيمتين لأعداد الفاصلة العائمة
(إن كان النمط Double or Float) لأن أسلوب المقارنة هنا لايجدي نفعاً.
إن الطريقة التي تمثل فيها لغات البرمجة قيم Double | Float تدعى بالتقييس (لا يتم حفظ القيم المسندة بقيم مطابقة) حيث يوجد فرق صغير بين القيمة الحقيقية و القيمة المخزنة في أي عملية من نوع Double | Float.
حيث نستخدم دالة للمقارنة تعيد (True) في حال كان الفرق بين العددين صغير جدا (أصغر من قيمة صغيرة محددة مسبقا)
بهذه الطريقة:
line 1 of code private boolean equals(final double X, final double Y) {
line 2 of code return (Math.abs(X -Y) < EPSILON); // ex. EPSILON = 0.00000000000001
line 3 of code }
ويمكننا استخدام الصف (Double.compare(X, Y للمقارنة.
صادر:
مشاكل مشابهة :
مرحبًا محمد.
الخطأ الذي ظهر لك Boolean cannot be converted to double يعني أنك قمت بتعيين متغير من النوع double و بعدها قمت بإعطاءه قمية boolean أي true أو false و هذا غير صحيح فمن المفترض أن تكون قمية المتغير من نفس نفس النوع الذي تم تعينه للمتغير سابقًا.
لاحظ أنه في السطر الخامس الجملة balance == amountToWithdraw تقوم بمقارنة قمية ال balance مع قيمة amountToWithdraw فإذا كانت القيم متساوية تقوم بإرجاع true و إن لم تكن متساوية تقوم بإرجاع false أي قيم من النوع boolean و هو غير مناسب لنوع المتغير updatedBalance حيث أنه من النوع double.
فمن المفترض أن تكون هذه الجملة balance == amountToWithdraw كما يلي
updatedBalance = balance - amountToWithdraw
فبناءًا على الجملة الأخيرة من الدرس يجب طرح القيمة التي تم سحبها "amountToWithdraw" من ال balance حتى نحصل على القيمة الجديدة لل balance
بالتوفيق.
التعليقات