11 مشكلة متكررة في شفرة جافا تواجه المبتدئين وكيف تتغلب عليها

كما هو المُبتدئ كان الخبير، من منهم لم يواجه مشكلة في شفرة جافا؟

و كل البدايات تتشابه، لذا تتشابهُ المشاكل التي يُعاني منها المبتدئون عموماً، هذه المشاكل من المُمكن أن نُسميها مشاكل البدايات.

وكلما تتطور المبرمج في عمله و علمه قلّت لديه هذه الأخطاء حتى تتلاشى.

هنا أذكُر لك من المشاكل التي تواجه المُبتدئين في لغة الجافا و كيف يتغلّب عليها.

1. اختلاف اسم الفئة عن إسم الملف

إذا لم تكن من مستخدمي محررات الجافا المتقدمة فلا بد أنك عانيت هذه المشكلة في شفرة الجافا.

يطلب من متعلمي الجافا المبتدئين في الجامعات و المعاهد عادة إستخدام محرر بدائي مثل notepad حتى يتعودوا على أساسيات الجافا و يحفظوا أساسياتها الضرورية.

وجود هذه المشكلة سيواجهك ما دُمت تستخدم محرراً عادياً، ولكن بإنتقالك إلى المحررات الأكثر تطوراً سيهتم المحرر بهذا الأمر بدلاً عنك.

هذا مثال للمشكلة حيثُ اختلف الإسمان بنقص الحرف r في نهاية إسم الفئة.

مشكلة اختلاف اسم الملف و الفئة في جافا

كيف تتغلب على هذه المشكلة: إذا كان الإسم معقداً أو طويلاً إنسخه بدلاً عن كتابته، و ما لم يكُن إستخدامك للمحررات البدائية ضرورياً إنتقل إلى محرر أحدث.

2. نسيان الفاصلة

هذه المشكلة في شفرة الجافا يقعُ فيها المبتدئ و الخبير على حدٍ سواء.

وضعُ الفاصلة في نهاية الجملة في جافا يحدد نهاية الجملة التي سيتم تنفيذها، و نسيانُها من الأخطاء المتكررة.

نسيان الفاصلة العشرية

كيف تتغلب على هذه المشكلة: لا يوجد حل مباشر لحل هذه المشكلة سوى الإهتمام بوضعها عند نهاية الجمل.

3. حلقة تكرارية بلا نهاية

الحلقة التكرارية اللا نهائية تؤدي إلى عمل البرنامج بصورة مستمرة.

بمعنى آخر تعليق البرنامج في نقطة محددة لا يتقدم ولا يتأخر.

هذا الخطأ من الأخطاء المنطقية و التي يصعُب إيجادها في البرامج الكبيرة خاصة.

من مسببات الحلقات التكرارية اللا نهائية حدوث أخطاء في شرط التوقف للحلقة التكرارية، و هنا أعطيك مثالاً لمثل هذه الحالة.

حلقة تكرارية لا منتهية
حلقة تكرارية لا منتهية

كيف تتغلب على هذه المشكلة: الخطأ المنطقي ليس من الممكن التغلب عليه إلا بالمنطق، لذا فللتأكد من أن الشفرة البرمجية تصل إلى مكان محدد إطبع جملة بعد الحلقة التكرارية للتأكد من أن التنفيذ يصل إلى هذه النقطة أم لا، هذا طبعاً إن لم تكن تستخدم المصحح debugger.

4. switch case بدون break

العبارة switch تُستخدم لإختيار إجراء لمدخل واحد.

ما يحدث في الرد الآلي لدى شركات الإتصالات “للحصول على رصيدك إضغط الرقم 1، لإنهاء المكالمة إضغط الرقم 2” مثالٌ مناسب لإستخدام العبارة switch.

بناءً على المُدخل يتم تنفيذ عدة خطوات، و المُتوقع بنهاية هذه الخطوات الخاصة بالإدخال رقم 1 مثلاً أن لا يتم تنفيذ أي شئ متعلق بالرقم 2 أو 3.

ولكن عند نسيان عبارة break بنهاية الخطوات الخاصة بالرقم 1 سينتقل التنفيذ تلقائياً إلى الخطوات التالية دون إعتبار إلى أي رقم تنتمي هذه الخطوات.

هذا مثالٌ لهذه الحالة

نسيان break في switch
نسيان break في switch

بينما تتوقع الحصول على هذه النتيجة

النتيجة المتوقعة لعبارة switch
النتيجة المتوقعة لعبارة switch

ستجد أنك قد حصلت على هذه النتيجة

النتيجة الفعلية الخاطئة لعبارة switch
النتيجة الفعلية الخاطئة لعبارة switch

كيف تتغلب على هذه المشكلة: إبدأ بإنشاء الهكيل العام لـ switch مع وضع break في كل حالة ثم أدخل المنطق.

5. خطأ في الدالة main

هذا الخطأ في تعريف الدالة main نفسها، و السبب الرئيسي هو قلة التعود على كتابتها بالطريقة الصحيحة.

فهناك مجموعة من المبرمجين يفضلون حفظ الدوال – ما هو أسلوبك مع الدوال: هل أنت المبرمج الذي يحفظ أم المبرمج الذي يبحث؟ – ويحدث الخطأ كثيراً بنسيان الأقواس مثل هذه الحالة

نسيان الأقواس في عبارة main
نسيان الأقواس في عبارة main

أو بنسيان جزء من تعريف الدالة مثل هذه الحالة

نسيان static
نسيان static

طريقة التغلب عليها: عوّد نفسك على كتابتها و احفظها مثل اسمك.

الطريقة الصحيحة لكتابة الدالة main
الطريقة الصحيحة لكتابة الدالة main

6. قوس مفقود

يعتبر القوس المفقود من المشاكل التي تصاحب كلّ شفرة برمجية غير منظمة و إن صغُرت.

كما أنها تصاحب البرمجيات الكبيرة أحياناً، و تقل كلّما كانت الشفرة المصدرية مُنظمة.

كيف تتغلب على هذه المشكلة: إبدأ بوضع الأقواس قبل كتابة أي إجراءات داخلها، ولا تفتح أيّ قوس دون إغلاقه فوراً، و استخدم التعليقات بنهاية الأقواس.

الهيكل العام لعبارة if و استخدام التعليق

7. استخدام = للمقارنة بدلاً عن ==

هذه المشكلة في شفرة جافا قد يكون سببُها النسيان أو عدم المعرفة.

للمقارنة بين رقمين من النوع int يتم إستخدام عبارة == بدلاً عن = و التي تُتسخدم لإسناد القيمة.

فبدلاً عن إستخدام المقارنة في عبارة if بهذه الطريقة

الطريقة الخاطئة للمقارنة بين رقمين
الطريقة الخاطئة للمقارنة بين رقمين

يجب كتابتها هكذا

الطريقة الصحيحة للمقارنة بين رقمين
الطريقة الصحيحة للمقارنة بين رقمين

كيف تتغلب على هذه المشكلة: إعلم أن المقارنة تتم بـ == ، لا شيء آخر.

8. مقارنة قيم الكائنات بإستخدام ==

إن استطعت تجاوز النقطة السابقة فيجب أن تتفادى هذه المشكلة أيضاً.

حين تكونُ المقارنة بين قيم الكائنات يقع بعضُ المبتدئين في خطأ مقارنة الكائنات بعبارة ==

مقارنة الكائن بإستخدام ==

كيف تتغلب على هذه المشكلة: تأكد أن كل كائن تتم مقارنته عن طريق الدالة equals.

المقارنة الصحيحة للكائنات
المقارنة الصحيحة لقيم للكائنات

9. نسيان return في نهاية الدالة

مالم تكُن الدالة void أي لا ترجع شيئاً يجب أن تحتوي في نهايتها على عبارة return.

نسيان return مشكلة شائعة أيضاً في الشفرات المصدرية لجافا، مثل هذه الحالة.

كيف تتغلب على هذه المشكلة: أكتب هيكل الدالة كاملاً قبل كتابتك لأي إجراءات داخلها.

هيكل الدالة مع عبارة return
هيكل الدالة مع عبارة return

10. كتابة النص في أكثر من سطر

عند كتابة الشفرات المصدرية لجافا بإستخدام محرر نصوص عادي يحاول المبرمج أحياناً الإنتقال إلى السطر التالي بإستخدام مفتاح Enter.

عند تعريف متغير من النوع String و الذي يحتوي على جملة طويلة من الممكن أن يقع المبرمج في مشكلة محاولة المحافظة على جميع النص تحت ناظريه بإستخدام Enter للإنتقال إلى السطر التالي.

فصل عبارة String في سطرين
فصل عبارة String في سطرين

وهذا هو ما لا تتقبله الجافا.

كيف تتغلب على هذه المشكلة: للإنتقال إلى سطر جديد أنهِ الجملة البرمجية ثم أضف ما تبقى من العبارة إلى المتغير السابق.

الفصل الصحيح لعبارة string
الفصل الصحيح لعبارة string

11. كتابة s بحرف صغير بدلاً عن الكبير في String

يستغربُ المبرمج أحياناً من أن تعريف المتغير من النوع String لا يعمل رغم كتابته بطريقة صحيحة!

لا يوجد إختلاف كبير بين الشكل الصغير و الكبير لحرف الـ s، لذا تقع هذه المشكلة.

إختلاف قليل بين s الصغيرة و الكبيرة
إختلاف قليل بين s الصغيرة و الكبيرة

كيف تتغلب على هذه المشكلة: لا يوجد حل فعلي غير التأكد من إستخدام الحرف s الكبير، إذا ظهرت لك المشكلة بإمكانك البحث عن كلمة string (بالحرف الصغير) و تحديد البحث المطابق وفق حالة الأحرف ثم التصليح.


قد يعجبك أيضا

هل تعلم لغات البرمجة صعب؟ قبل ذلك يجب أن تتعلم التفكير كمبرمج

هل تعلم لغات البرمجة صعب؟ قبل ذلك يجب أن تتعلم التفكير كمبرمج
ما رأيك؟ اترك تعليقاً أدناه


  1. أستاذي الفاضل
    آسف جدا على كثرة التعليقات…اكتشفت للتو خطئي أو اخطائي على الأصح:
    أولا وضع الفاصلة بعد جملة الحلقة for
    ثانيا وضع علامة ناقص بدلا من يساوي سهوًا مني
    ولكن مع ذلك يبقى السؤال: هل تلك الأقواس الحاضنة مهمة جدا في الجافا؟

  2. ملاحظة:
    حتى بعد أن أرفع الجملتين الأخيرتين وأضعهما قبل القوس، هكذا:
    System.out.print(“-*-*-**-*–**-**-** \n”);
    for (int i=1; i<=4; i-i+1);
    System.out.print("Riad ");

    System.out.print("\n");
    }

    تظل المشكلة هي نفسها

  3. الأستاذ مصطفى الطيب
    شكرا على الشرح الجميل والمتقن.
    تمنيت لو تعرضت بالشرح المفصل لمشكلة الأقواس الحاضنة في محرر الجافا وهي التي تكون بالشكل التالي:
    }
    }
    حيث أنني أجد داخل محرر الNetBeans عدة أقواس وأعجر تماما عن التعامل معها، وحتى أعطيك مثالا واضحا، فهذا شكل نتيجة أحد تماريني:
    public static void main(String[] args) {

    String loop;
    loop= “ma premiere boucle”;
    for (int i=1; i<=7; i=i+1);
    System.out.print(loop+"\n");

    System.out.print("-*-*-**-*–**-**-** \n");
    for (int i=1; i<=4; i-i+1);

    }

    System.out.print("Riad ");

    System.out.print("\n");
    والنتيجة: خطأ.
    السؤال: أين يقع خطئي هنا؟ وكيف أصححه وأتعامل بشكل صائب مع تلك الأقواس، بحيث أضع كل جملة في مكانها الدقيق؟؟

  4. السلام عليكم / الله يعطيك العافية
    أنا مشكلتي مش بكتابة الأكواد فالكود ممتاز
    المشكلة في أمر الادخال Scanner
    إذا وضعت أمر إدخال من نوع int قبل ادخال من نوع String
    يتجاوز أمر إدخال String وينفذ باقي البرنامج
    أما العكس يقوم بتنفيذ الأمر int
    عندي نسخة NetBeans 11.2
    المشكلة في البرنامج ولا كيف ؟

  5. سلام استاذ
    انا كمبتدئ في لغة جافا ايه افضل لي عشان اكتب فيو الكود تكست باد او نتبينز ???????????

    1. مرحباً بك أخي عبدالله،

      كمبتدئ يفضل أن تبدأ الكتابة في محرر نصوص عادي (Notepad مثلاً) حتى تتعود على الأساسيات و تتعرف على أكبر قدر من المشاكل المحتملة.

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

{"email":"البريد الالكتروني غير صحيح","url":"رابط الموقع غير صحيح","required":"بعض الحقول المطلوبة لم تتم تعبئتها"}

نجاح!

تنبيه!

خطأ!