الكلية الجامعية للعلوم التطبيقيةبرمجة 1
English

المرجع

كل ما تحتاج إلى الرجوع إليه أثناء البرمجة، في مكان واحد.

هيكل كل برنامج

import java.util.Scanner;   // only when reading input

public class Main {
    public static void main(String[] args) {
        // your statements go here
    }
}

اختصارات NetBeans

الاختصارماذا يفعل
Ctrl+Shift+Nمشروع جديد
sout + Tabيكتب أمر الطباعة
psvm + Tabيكتب الدالة main
F6تشغيل المشروع
Shift+F6تشغيل الملف المفتوح
Ctrl+Sحفظ الملف
Alt+Shift+Fتنسيق الكود
Ctrl+/تعليق السطر أو إلغاء تعليقه
Ctrl+F5بدء التتبّع
F8السطر التالي أثناء التتبّع
F7الدخول إلى الدالة أثناء التتبّع

الأنواع

النوعمثالرمز printfقراءته بواسطة Scanner
int19%dnextInt()
long10L%dnextLong()
double3.75%fnextDouble()
booleantrue%bnextBoolean()
char'A'%cnext().charAt(0)
String"Sara"%snext() / nextLine()

رموز printf

الرمزالناتجالمعنى
%d25عدد صحيح
%f3.140000عدد عشري بست خانات
%.2f3.14خانتان عشريتان
%sAliنص
%cAحرف
%btrueقيمة منطقية
%5d 25عرض 5 خانات، محاذاة لليمين
%-5d25 عرض 5 خانات، محاذاة لليسار
%05d00025تعبئة بأصفار
%n↵سطر جديد
%%%علامة النسبة نفسها

ترتيب العوامل

الأولويةالعوامل
1 (الأعلى)() ++ -- ! (cast)
2* / %
3+ -
4< <= > >=
5== !=
6&&
7||
8 (الأدنى)= += -= *= /= %=

مسرد المصطلحات

المصطلحبالعربيةالمعنى
variableمتغيراسم يحمل قيمة يمكن أن تتغير
data typeنوع البياناتيحدد نوع القيم التي يقبلها المتغير
declarationتصريححجز متغير بنوع واسم
assignmentإسنادوضع قيمة في متغير
expressionتعبيركود يُحسب وينتج قيمة
statementأمرتعليمة كاملة تنتهي عادة بفاصلة منقوطة
operatorعاملرمز ينفذ عملية، مثل +
conditionشرطتعبير نتيجته صح أو خطأ
loopحلقةتكرار مجموعة أوامر
methodدالةمجموعة أوامر لها اسم تؤدي مهمة
parameterمعاملمتغير تستقبل به الدالة قيمة
argumentوسيطالقيمة الممررة عند الاستدعاء
returnإرجاعإعادة قيمة من الدالة إلى من استدعاها
arrayمصفوفةمجموعة قيم من نوع واحد لها مواقع مرقمة
indexموقع (فهرس)رقم موقع العنصر، يبدأ من 0
classصنفالوحدة التي نكتب داخلها الكود
packageحزمةمجلد يجمع الأصناف
compilerالمترجميحوّل الكود إلى صيغة قابلة للتشغيل
bytecodeالبايت كودالصيغة التي تشغّلها آلة Java الافتراضية
exceptionاستثناءخطأ يحدث أثناء التشغيل
debuggingتتبّع الأخطاءتشغيل البرنامج خطوة خطوة لفهمه وإصلاحه

دليل رسائل الخطأ

الرسالةمعناهاكيف تصلحها
';' expectedنقص رمز يتطلبه Java في هذا الموضع، وغالبًا هو الفاصلة المنقوطة ; في نهاية الأمر.انظر إلى نهاية السطر السابق للعلامة، وأضف الرمز الناقص.
cannot find symbolاستخدمت اسمًا لا يعرفه المترجم: إما لم تصرّح عنه، أو كتبته بحروف مختلفة.تأكد من التصريح عن المتغير قبل استخدامه، ومن تطابق الحروف الكبيرة والصغيرة.
cannot find symbol (method)استدعيت دالة غير موجودة بهذا الاسم أو بهذه المعاملات.تحقق من اسم الدالة وعدد معاملاتها وأنواعها، مثل println وليس printn.
cannot find symbol (class)هذا الصنف غير معروف، وغالبًا نسيت سطر import.أضف الاستيراد المناسب، مثل import java.util.Scanner;.
incompatible typesنوع القيمة لا يناسب نوع المتغير، مثل وضع نص في int أو double في int.غيّر نوع المتغير، أو حوّل القيمة، مثل (int) 3.5 أو Integer.parseInt("19").
not a statementكتبت تعبيرًا لا يفعل شيئًا وحده، مثل x + 1;.خزّن النتيجة أو اطبعها، مثل x = x + 1;.
unclosed string literalفتحت علامة تنصيص " ولم تغلقها في السطر نفسه.أضف علامة التنصيص الناقصة.
unclosed commentفتحت تعليقًا بالرمز /* ولم تغلقه، فصار بقية الملف تعليقًا.أضف */ في نهاية التعليق.
reached end of file while parsingانتهى الملف قبل أن تُغلق كل الأقواس، فهناك } ناقصة.عُدّ الأقواس، واستخدم Alt+Shift+F لتنسيق الكود في NetBeans.
illegal start of expressionفي هذا الموضع رمز لا يمكن أن يبدأ به تعبير، وغالبًا السبب قوس ناقص قبله.راجع الأقواس والسطر الذي قبل العلامة.
illegal start of typeيوجد كود في مكان لا يُسمح فيه، غالبًا خارج main أو بعد قوس زائد.تأكد أن أوامرك داخل قوسي main.
variable x might not have been initializedتحاول قراءة متغير قد لا يحمل قيمة بعد.أسند له قيمة عند التصريح، مثل int x = 0;.
variable x is already definedصرّحت عن الاسم نفسه مرتين في النطاق نفسه.احذف النوع من السطر الثاني إن أردت الإسناد فقط: x = 5;.
missing return statementقد تنتهي الدالة دون إرجاع قيمة، مع أن نوعها ليس void.تأكد أن كل مسار في الدالة ينتهي بأمر return.
incomparable typesتقارن قيمتين من نوعين لا تصح مقارنتهما.حوّل إحدى القيمتين، أو قارن النصوص باستخدام equals.
bad operand types for binary operatorهذا العامل لا يعمل مع هذين النوعين، مثل طرح نص من عدد.تأكد من أنواع القيم على طرفي العامل.
'else' without 'if'يوجد else بلا if قبله مباشرة، وغالبًا السبب ; بعد الشرط أو قوس ناقص.احذف الفاصلة المنقوطة بعد if (...) وراجع الأقواس.
break outside switch or loopالأمر break يعمل داخل حلقة أو switch فقط.انقله إلى داخل الحلقة، أو استخدم return للخروج من الدالة.
unreachable statementلن يصل التنفيذ إلى هذا السطر أبدًا، مثل سطر بعد return أو break.احذف السطر أو انقله إلى قبل الأمر الذي ينهي التنفيذ.
method cannot be applied to given typesاستدعيت الدالة بعدد أو أنواع معاملات لا تطابق تعريفها.طابق عدد المعاملات وأنواعها مع تعريف الدالة.
class X is public, should be declared in a file named X.javaاسم الصنف العام يجب أن يطابق اسم الملف تمامًا.غيّر اسم الصنف أو اسم الملف ليتطابقا.
integer number too largeهذا العدد أكبر مما يتسع له int.استخدم long وأضف الحرف L، مثل 3000000000L.
incompatible typesنوع القيمة لا يناسب ما هو مطلوب هنا.راجع نوع القيمة ونوع المتغير.
ArithmeticException: / by zeroقسمة عدد صحيح على صفر أثناء التشغيل.تحقق من أن المقسوم عليه ليس صفرًا قبل القسمة.
ArrayIndexOutOfBoundsExceptionاستخدمت موقعًا خارج حدود المصفوفة. المواقع تبدأ من 0 وتنتهي عند length - 1.راجع شرط الحلقة: استخدم i < a.length وليس i <= a.length.
StringIndexOutOfBoundsExceptionموقع الحرف خارج حدود النص.المواقع من 0 إلى length() - 1.
NullPointerExceptionاستخدمت متغيرًا قيمته null، أي لا يشير إلى شيء.أنشئ الكائن أو أسند قيمة للمتغير قبل استخدامه.
NumberFormatExceptionتحاول تحويل نص إلى عدد، لكن النص ليس عددًا صحيحًا.تأكد من محتوى النص قبل استخدام Integer.parseInt.
InputMismatchExceptionطلب Scanner عددًا لكن المدخل كان نصًا.أدخل قيمة من النوع المطلوب، أو تحقق باستخدام hasNextInt().
NoSuchElementExceptionيطلب البرنامج مدخلات أكثر مما تم إدخاله.تأكد من عدد القراءات وعدد المدخلات.
IllegalFormatConversionException: d != java.lang.Stringرمز التنسيق لا يناسب نوع القيمة، مثل %d مع نص أو عدد عشري.استخدم %d للأعداد الصحيحة و%f للعشرية و%s للنصوص.
MissingFormatArgumentException: Format specifier '%d'في القالب رموز تنسيق أكثر من القيم المعطاة.أعطِ قيمة لكل رمز تنسيق بالترتيب.
StackOverflowErrorدالة تستدعي نفسها بلا توقف حتى امتلأت الذاكرة المخصصة للاستدعاءات.أضف شرط توقف للدالة التراجعية.