المدخلات والمخرجات بلغة الجافا
المدخلات والمخرجات:
لنجعل برامجنا أكثر إثارة للاهتمام، ونحن نريد قبول المدخلات 
و تنسيق مخرجات البرنامج بشكل صحيح. وبطبيعة الحال فإن استخدام البرامج الحديثة كواجهة المستخدم الرسومية(GUI) لجمع مدخلات المستخدم . ومع ذلك فإن برمجة مثل تلك المدخلات تتطلب المزيد من الأدوات والتقنيات
أكثر مما لدينا في الوقت الحالي. لأن المطلوب الأول من العمل هوأن يصبح المبرمج أكثر دراية واعتيادية مع لغة البرمجة جافا، ونحن سنبدأ بتغطية المدخلات والمخرجات في الوقت الراهن.
قراءة الإدخال:
أنه من السهل طباعة المخرجات إلى نافذة وحدة التحكم فقط عن طريق استخدام System. out.printlnولكن القراءة المدخلات ليست بهذه البساطة. ولقراءة مدخلات وحدة التحكم، عليك أولا بناء Scanner الذي هومرتبط بالنظام الداخلي . و نستطيع استخدام الكثير من الدوال الموجودة في فئه rScanne لقراءة المدخلاتلان المدخل قد يحتوي على بعض المسافات و لقراءته كسطر نستخدم متغير nextLine و لقراءة المدخل ككلمه واحده نستخدم داله 
in.next();
مثال على ذلك 
استخدم داله nextInt لإدخال عدد صحيح مثال على ذلك
استخدم داله nextDouble لإدخال عدد عشري
و لابد من ايراد
import java.util.*;
في بدايه البرنامج فئه Scanner معرفه في حزمهjava. util ، و في حال استخدام هذا الصنف لابد من استخدام import
ملاحظه :
فئه Scanner ليست مناسبة لقراءة كلمة السر من وحدة التحكم حيث إن المدخلات تكون ظاهره للجميع ، لغة الجافا SE 6 قدمت فئه console خصيصاً لهذا الغرض ،لقراءة كلمه السر استخدم التعليمات البرمجية التاليه :ولأسباب أمنية، يتم إرجاع كلمة المرور في المصفوفه المكونه من مجموعة من الأحرف بدلا من السلسله من الاحرف (String) ، بعد الانتهاء من تجهيز كلمة السر، يجب عليك استبدال المصفوفه على الفور بأي رقم تريده . ولعل معالجة المدخلات مع أيقونة وحدة التحكم ليست مريحة كما هو الحال مع Scanner، إذ يمكنك فقط قراءة سطر واحد من المدخلات في كل مرة. ولا توجد طرق لقراءة الكلمات الفردية أو الأرقام.
java.util.Scanner :
• (Scanner(InputStream in
يبني كائن من Scanner
• ()String nextLine
يقرأ السطر التالي من المدخلات
•()String next
يقرأ الكلمه الاولى من المدخلات
• ()int nextInt و ()double nextDouble
يقرأ و يحول تسلسل الأحرف المتتابع الذي يمثل في أعداد صحيحه أو أعداد عشريه
• ()boolean hasNext
• ()boolean hasNextInt و ()boolean hasNextDouble
يختبر تسلسل الأحرف هل يمثل أعداد صحيحه أو أعداد عشريه
• static Console console()
عائد كائن Console يتفاعل مع المستخدم باستخدام console window إذا كان التفاعل ممكن ، كائن Console يتوفر لأي برنامج يتم تشغيله عن طريق console window ، اما غير ذلك ، فتوفره يعتمد على النظام المستخدم
• (static char[] readPassword(String prompt, Object... args
• (static String readLine(String prompt, Object... arg
يعرض جمله تحث المستخدم على ادخال معلوماته مثل
و يأخذ المدخلات من المستخدم، معاملات args تستخدم لتنسيق المخرجات
تنسيق المخرجات
يمكنك طباعة عدد X إلى وحدة التحكم ( System.out.print ). ومع هذا الأمر
تستطبع طباعة أكبر عدد ممكن وبأي عدد غير الصفر لهذا النوع. وعلى سبيل المثال
double x = 10000.0 / 3.0
المخرج :
3333.3333333333335
وتلك النقطة تعتبر مشكلة إذا كنت ترغب في عرض فئة الدولار والسنت، ففي الإصدارات القديمة من الجافا كان تنسيق الأرقام متعبا . ولحسن الحظ فإن نسخة الجافا 5.0 SE اعادت طريقة printf الموجوده في مكتبة C على سبيل المثال
يمكن طباعة X مع عرض ثمانية أحرف ودقة حرفان. 
المخرج:
3333.33
ويمكنك توفير معاملات متعددة ل printf على سبيل المثال:
كل من التنسيقات اللتي تبدأ ب (%a)يتم استبدالها مع المعاملات المناسبه . طابع التحويل يحدد القيمه المراد تحويلها على النحو التالي:
f: عدد عشري , s:نص , d عدد صحيح:
جدول 5-3 (التحويلات)
بالاضافه إلى ذلك يمكنك تحديد علامه معينه للتحكم في مظهر المخرجات جدول 6-3 يستعرض ذلك على سبيل المثال يمكننا استخدام الفاصله على النحو التالي :
ذلك سيطبع 
3,333.33
ملاحظة : يمكنك استخدام التحويلات لتنسيق الكائنات اذا طبق الكائن formattable interface ،من ثم يتم استدعاء داله format غير ذلك يتم استدعاء دالة toString لتقوم بتحويل الكائن إلى String حيث سيتم مناقشته في الفصل الخامس ،السادس
نستطيع استخدام داله String format لانشاء تنسيقات خاصه بالنصوص بدون طباعتها 
String message = String.format("Hello, %s. Next year, you'll be %d", name, age); 
على الرغم من أننا لم ندخل في تفاصيل Data type حيث اننا سنتحدث عنها في الفصل الرابع ، ولكن سوف نناقش هنا بعض تنسيقات الوقت والتاريخ بالعاده نقوم باستخدام حرفين للتنسيق يبدأ من t وينتهي بأحد حروف جدول 7-3 على سبيل المثال:
System.out.printf("%tc", new Date());
يقوم بطباعه الوقت والتاريخ بالتنسيق التالي
Mon Feb 09 18:05:19 PST 2004
جدول 7-3 تحويلات الوقت والتاريخ
كما ترون في الجدول 3-7، وبعض من الأشكال لا تشير إلا لجزء من تاريخ معين، على سبيل المثال، فقط يوم أو مجرد شهر. سيكون من المزعج بعض الشيء تزويد التاريخ عدة مرات والقيام بتنسيق كل جزء . لهذا السبب، سلسلة تنسيق(format string) يمكن أن تشير إلى مؤشر المعطى ليكون مهيأ. هذا المؤشر يجب أن يتبع ب ٪، ويجب أن يتم إنهاؤه عن طريق $. على سبيل المثال،
System.out.printf("%1$s %2$tB %2$te, %2$tY", "Due date:", new Date()); 
مطبوعات
تاريخ الاستحقاق: 9 فبراير 2004
بدلا من ذلك، يمكنك استخدام