Java - What is the problem in my code ?

0
Mohamed Amr
  • برمجة
  • 2020-09-17T20:39:03+00:00
  • المزيد
    • رابط مختصر

التعليقات

  • الأفضل
  • الأحدث
  • الأقدم
1
المهدي رجيع
  • 2020-09-17T20:41:45+00:00
  • 2020-09-17T20:42:38+00:00
  • المزيد
    • رابط مختصر

لماذا استعملت== ؟

0
Mohamed Amr
  • 2020-09-17T20:52:31+00:00
  • المزيد
    • رابط مختصر

I thought that is what he wants, anyway i have used - and still same problem

0
Mohamed Amr
  • 2020-09-17T20:55:46+00:00
  • المزيد
    • رابط مختصر

the space between amountToWithdraw and ; was the problem, Thank you <3

1
Naser Dakhel
  • 2020-09-17T20:44:41+00:00
  • المزيد
    • رابط مختصر

ممّا قرأت في التوجيهات، يجب عليك أن تنشأ updatBalance وتخزن فيه قيمة balance مطروحاً منها قيمة amountToWithdraw ممّا يعني أنه يجب عليك ان تعدّل السطر 5 ليصبح:

double updateBalace = balance - amountToWithdraw

بدلاً من السطر الموجود حالياً لأن السطر حالياً يقوم بإرجاع متغير بولياني صح أو خطأ بسبب إشارة المساواة (==) وهذا هو تفسير الخطأ، لا يمكنك أن تحوّل قيمة bool إلى double.

0
Mohamed Amr
  • 2020-09-17T20:53:14+00:00
  • المزيد
    • رابط مختصر

You are right i should have use - not == but i still have the same problem

0
Naser Dakhel
  • 2020-09-17T20:54:46+00:00
  • المزيد
    • رابط مختصر

نفس رسالة الخطأ بالضّبط؟ إذا لم تكن مماثلة رجاءً قم بإرفاقها.

0
Mohamed Amr
  • 2020-09-17T20:55:22+00:00
  • المزيد
    • رابط مختصر

the space between amountToWithdraw and ; was the problem, Thank you <3

0
Wael Aljamal
  • 2020-09-18T06:30:57+00:00
  • 2020-09-18T06:32:29+00:00
  • المزيد
    • رابط مختصر

إن حل المشكلة كما تفضلت حسب الدورة التي تتابعها هي تخزين قيمة الطرح بين المتحولين أي:

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 للمقارنة.

صادر:

Correct way to compare floats or doubles in Java - HowToDoInJava

howtodoinjava.com/java-examples/co...

Learn to compare double or compare float to avoid unexpected results caused by minor rounding errors during conversions at lower level program execution.

http://lectures.molgen.mpg....

مشاكل مشابهة :

Why does Double.NaN==Double.NaN return false?

stackoverflow.com/questions/881973...

I was just studying OCPJP questions and I found this strange code: public static void main(String a[]) { System.out.println(Double.NaN==Double.NaN); System.out.println(Double.NaN!=Double.N...

Test for floating point equality. (FE_FLOATING_POINT_EQUALITY)

stackoverflow.com/questions/383259...

I am using a findbugs in an ANT script and I can't figure out how to fix two of my errors. I have read the...

Why can't we use '==' to compare two float or double numbers

stackoverflow.com/questions/178982...

I am reading Effective java by Joshua Bloch and in Item 8: Obey the general contract when overriding equals, this statement is written for float...

0
Yomna Raouf
  • 2020-09-18T09:05:49+00:00
  • 2020-09-18T09:06:59+00:00
  • المزيد
    • رابط مختصر

مرحبًا محمد.

الخطأ الذي ظهر لك 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

بالتوفيق.


اقرأ أيضًا

  • Problem
  • socket in c
  • Problem
  • دليل الكود النظيف (Clean code in JavaScript) باللغة العربية
  • الشفرة النظيفة (Clean Code)

برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

25.4 ألف متابع

أطلق موقعك الإلكتروني في دقائق

صمم موقعك كاملا بالسحب والإفلات بدون خبرة برمجية، واحجز مكانك على الإنترنت.

أنشئ موقعك الآن

انسخ هذا الرابط:

تنبيه