Professional Documents
Culture Documents
مقدمة ›
طريقة جعل البرنامج يستقبل بيانات من المستخدم ›
Scannerكونستركتورات الكالس ›
Scannerدوال الكالس ›
مقدمة
في الدروس السابقة ,كنا نكتب الكود ث ّم نقوم بتجربته فيتنفذ كما هو ,بمعنى أننا كنا أصالً نعرف ما سيظهر عند تشغيل الكود ألننا قمنا بإدخال القيم
البرنامج تشغيل قبل المتغيّرات .في
في هذا الدرس ستتعلم كيف تنشئ برنامح يتفاعل مع المستخدم ,حيث أنّك عندما تقوم بتشغيله سيطلب من المستخدم إدخال بيانات ,و بعد إدخالها
.سيقوم البرنامج بمعالجتها و فعل شيء معيّن بها
هو كالس جاهز في جافا ,يستخدم بشكل عام لجعل البرنامج يستقبل بيانات من المستخدم باإلضافة إلى إمكانية تحويل نوع Scannerالكالس
.دالّة 50كونستركتورات و أكثر من 9هذه البيانات و التعديل عليها .و هو كبير جدا ُ حيث أنه يتألف من
حرف واحد ( سواء حرف ,رقم ,رمز ) ,مثال a :أو 3أو @.
سطر كامل ( أي أكثر من كلمة ) ,مثالharmash.com is amazing site to learn programming :
صح أو خطأ ,أي إجبار المستخدم على إدخال كلمة واحدة و هي إ ّما trueو إ ّما .false
مصطلحات تقنية
.White الفارغة Spaces المسافات شكل تحديد في الـ Patternالمستخدمة Delimiterتعني
سترى الحقا ً أنه بإمكانك جعل مترجم جافا يعتبر حرف أو كلمة أو جملة ما تبدو و كأنها مسافة فارغة .White Space
بدون .)GUI أي مستخدم ( واجهة بدون يعمل الذي البرنامج Consoleتعني Application
إذا ً جميع البرامج التي فعلناها في الدروس السابقة تس ّمى ّ .Console Application
ألن النتيجة التي كنا نراها عند تشغيل البرنامج ,كانت
.تطلب فيه من المستخدم إدخال بيانات من لوحة المفاتيح ) Console Applicationإذا ً ستحتاج إلى األوامر التالية في ك ّل برنامج ( يعتبر
مثال
.1إستدعاء الكالس Scannerحتى نستطيع إنشاء كائن منه.
import ;java.util.Scanner
.3إستدعاء إحدى دوال إدخال البيانات من خالل كائن الـ Scannerالذي يفترض أنك قمت بإنشائه سابقاً.
هنا قمنا بإستدعاء الدالة )( nextIntمن هذا الكائن و التي تعني أنّه عند تشغيل البرنامج و عندما يأتي لتنفيذ هذا الكود ,سيقوم بإنتظار
المستخدم إلدخال عدد صحيح من لوحة المفاتيح ,بعدها سيتم تخزين ما أدخله المستخدم في المتغيّر .a
int ;)(a = input.nextInt
إنتبه
ن عدم حدوث أي أخطاء )( closeبواسطة الدالّة Scannerو ال تنسى ايضا ً إغالق كائن الـ try,دائما ً ضع دوال إستقبال البيانات بداخل الجملة
.من شأنها تعليق البرنامج
أمثلة مه ّمة
هنا قمنا بإنشاء برنامج يطلب من المستخدم إدخال إسمه و عمره و مهنته ( .مثال ).
Scannerكونستركتورات الكالس
Scanner.الموجودين في الكالس constructorsالجدول التالي يحتوي على جميع الـ
الكونستركتور مع تعريفه
)Scanner(File Sourceيستخدم هذا الكونستركتور لقراءة البيانات من ملف معيّن. 1
)Scanner(File Source, String charsetNameيستخدم هذا الكونستركتور لقراءة البيانات من ملف معيّن ,مع تحديد
2
الترميز المستخدم عند قراءتهم.
)Scanner(InputStream sourceيستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه .InputStream 3
)Scanner(Path sourceيستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن الـ .Path 5
)Scanner(Path source, String charsetNameيستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن
6
الـ Pathمع تحديد الترميز المستخدم عند قراءتهم.
)Scanner(Readable Sourceيستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه .Readable 7
Scannerدوال الكالس
Scannerفي أغلب األمثلة الموضوعة في الجدول التالي سنستخدم كونستركتور الكالس مالحظة الذي
.بدل إدخالها بواسطة دوال اإلدخال .و النتيجة هي نفسها Scannerحتى ندخل بيانات مباشرة ً في كائن الـ Argumentكـ Stringيأخذ
.حتى يكون التركيز فقط على الدّوال التي نريدك أن تر ّكز عليها ) ( try, catch, finallyكما أننا لن نقوم باستخدام الجمل
الكالس مع التعامل Scanner,عند بكلمة تبدأ دالّة اإلدخال nextك ّل دوال من دالّة .تعتبر
..إلخ )(: next() - nextLine() - nextInt() - nextFloatأمثلة
الدالة مع تعريفها
)String next(Pattern patternترجع الكلمة التالية التي ت ّم إدخالها في كائن الـ Scannerفي حال كانت تتطابق مع كائن
)String next(String patternترجع الكلمة التالية التي ت ّم إدخالها في كائن الـ Scannerفي حال كانت تتطابق مع
)(boolean nextBooleanترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
النوع ,booleanأي في حال كانت هذه الكلمة trueأو falseستقوم بإرجاعها. 5
)byte nextByte(int radixترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
)(double nextDoubleترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
)(float nextFloatتبحث في البيانات التالية التي تم إدخالها في كائن الـ ,Scannerو في حال كان يمكن معالجة هذه البيانات
)(int nextIntترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من النوع .int
10
و تستخدم ايضا ً إلستقبال قيمة نوعها intمن المستخدم ( .مثال )
)int nextInt(int radixترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
)(long nextLongترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من النوع .long
12
و تستخدم ايضا ً إلستقبال قيمة نوعها longمن المستخدم ( .مثال )
)long nextLong(int radixترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
)(short nextShortترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
)short nextShort(int radixترجع الكلمة التالية التي تم إدخالها في كائن الـ Scannerفي حال كانت هذه الكلمة تعتبر من
الدالة مع تعريفها
)String findInLine(Pattern patternتبحث في الـ Scannerالذي قام باستدعائها عن أول مكان يتطابق مع
1
نمررها لها كـ Argumentو ترجعه ( .مثال )
الـ Patternالتي ّ
)String findInLine(String patternتبحث في الـ Scannerالذي قام باستدعائها عن أول مكان يتطابق مع
2
الـ ( Stringالتي تمثّل )Patternالتي ّ
نمررها لها كـ Argumentو ترجعه ( .مثال )
)String findWithinHorizon(String pattern, int horizonتبحث في الـ Scannerالذي قام باستدعائها عن 4
أول مكان يتطابق مع الـ ( Stringالذي يمثّل ,)Patternو تتوقف في البحث قبل الـ indexالذي نضعه في الباراميتر الثاني ( .مثال )
)(MatchResult matchترجع كائن نوعه MatchResultيمث ّل نتيجة آخر عمليّة بحث تم إجرائها على كائن
صل.
الـ Scannerمع شرح مف ّ 5
و ترجع nullفي حال عدم حدوث أي إستثناء بسبب كائن الـ ( .Scannerمثال )
الدالة مع تعريفها
)(boolean hasNextترجع trueفي حال كان ال يزال يمكن استدعاء دالة من دوال اإلدخال الموجودة كائن
1
الـ ( .Scannerمثال )
)boolean hasNext(Pattern patternترجع trueفي حال ت ّم إيجاد قيمة الـ Patternالتي نضعها لها
2
كـ Argumentفي كائن الـ ( .Scannerمثال )
)boolean hasNext(String patternترجع trueفي حال ت ّم إيجاد قيمة الـ Stringالتي نضعها لها
3
كـ Argumentو التي تمث ّل Patternمعيّنة في كائن الـ ( .Scannerمثال )
)(boolean hasNextIntترجع trueفي حال كانت البيانات التالية التي تم إدخالها في كائن الـ Scannerيمكن التعامل معها
4
كـ ( .intمثال )
)boolean hasNextInt(int radixترجع trueفي حال كانت البيانات التالية التي تم إدخالها في كائن الـ Scannerيمكن
5
نمرره لها كـ ( .Argumentمثال )
التعامل معها كـ intو تتطابق مع الـ radixالذي ّ
)(boolean hasNextLineترجع trueفي حال كان النصّ المدخل في كائن الـ Scannerيتألف من أكثر من 6
سطر ( .مثال )
الدالة مع تعريفها
)(void closeتغلق الـ ,Scannerأي تمنع إدخال أي بيانات جديدة في البرنامج عن طريق كائن الـ ( .Scannerمثال ) 1
)(Pattern delimiterترجع الـ Patternالذي يستخدمه كائن الـ Scannerفي تحديد شكل المسافات الفارغة ( .مثال ) 2
)(Locale localeترجع كائن نوعه Localeيمثل نوع الترميز الذي يستخدمه كائن الـ Scannerعند قراءة و تخزين
3
البيانات ( .مثال )
)Scanner skip(Pattern patternتتخطى النص التالي في كائن الـ Scannerفي حال كان يتطابق مع كائن
6
الـ Patternمع تجاهل الـ ( .delimitersمثال )
)Scanner skip(String patternتتخطى النص التالي في كائن الـ Scannerفي حال كان يتطابق مع الـ Stringالذي
7
نمرره لها كـ Argumentو الذي يمثّل Patternمع تجاهل الـ ( .delimitersمثال )
ّ
)(String toStringترجع Stringتمثّل كافة معلومات كائن الـ ( .Scannerمثال ) 8
)Scanner useDelimiter(Pattern patternتستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن
9
الـ ( .Scannerمثال )
)Scanner useDelimiter(String patternتستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن
10
الـ ( .Scannerمثال )
)Scanner useLocale(Locale localeتستخدم لتحديد الترميز الذي سيستخدمه كائن الـ Scannerعند قراءة و تخزين
11
البيانات ( .مثال )
)Scanner useRadix(int radixتستخدم لتحديد الـ radixالذي سيستخدمه كائن الـ Scannerعند قراءة