فئة java.util.scanner هي فئة بسيطة للمسح النصية التي تحلل أنواع البيانات والسلاسل الأساسية. يستخدم بشكل أساسي تعبيرات منتظمة لقراءة أنواع البيانات المختلفة.
من أجل قراءة تسلسل الأحرف بكفاءة ، تقرأ فئة java.io.bufferedreader النص من تدفقات إدخال الأحرف ومؤسسات الأحرف.
فيما يلي الاختلافات بين الفئتين:
عند استخدام NextLine () في Nextxxx () ، ما هي المشكلة في استخدام فئة الماسحة الضوئية؟
حاول تخمين إخراج الكود التالي ؛
// الكود باستخدام الماسح الضوئي classimport java.util.scanner ؛ class تختلف {{public static void main (string args []) {scanner scn = new scanner (system.in) ؛ system.out.println ( scn.nextline () ؛ system.out.printf ("لقد أدخلت:-" + a + "" + "والاسم باسم" + b) ؛}}مدخل:
50
المهوس
الإخراج:
أدخل عدد صحيح
أدخل سلسلة
لقد أدخلت:- 50 واسم كما
دعونا نحاول استخدام فئة Bufferreader واستخدام نفس الإدخال
// الكود باستخدام bufferedReader classimport java.io.*؛ class تختلف {{public static void main (string args []) remrows ioexception {bufferedReader br = new Bufferreaderer (newInputStreamReader (system.in)) ؛ system.out.println (" integer.parseint (br.readline ()) ؛ system.out.println ("أدخل سلسلة") ؛ سلسلة B = br.readline () ؛ system.out.printf ("لقد أدخلت:-" + A + "والاسم" + B) ؛}}} مدخل:
50
المهوس
الإخراج:
أدخل عدد صحيح
أدخل سلسلة
لقد أدخلت:- 50 واسمًا باسم المهوس
في فئة الماسح الضوئي ، إذا اتصلنا بالطريقة NextLine () بعد أي طرق 7 nextxxx () ، لا يمكن أن تقرأ طريقة NextLine () أي شيء من وحدة التحكم ، ولن يدخل هذا المؤشر إلى وحدة التحكم ، فسوف تتخطى هذه الخطوة. طرق Nextxxx () هي هذه الطرق ، NextInt () ، NextFloat () ، NextByte () ، NextShort () ، NextDouble () ، NextLong () ، Next ().
لا توجد مشكلة في فئة Bufferreader. تحدث هذه المشكلة فقط في فئة الماسح الضوئي ، لأن طريقة Nextxxx () تتجاهل حرف الخط الجديد *** ، لكن NextLine () لا يتجاهلها. إذا استخدمنا أكثر من طريقة NextLine () بين طريقة Nextxxx () وطريقة NextLine () ، فلن تحدث هذه المشكلة ؛ لأن NextLine () يستهلك أحرف NewLine. يمكنك الرجوع إلى الطريقة الصحيحة لكتابة هذا البرنامج (http://code.geeksforgeeks.org/cerahd). هذه المشكلة هي نفس طريقة Scanf () في C/C ++ (http://www.geeksforgeeks.org/problem-with-scanf-when-it-s-fgetsgetsscanf-after-it/) التي تتبع طريقة GOTS ().
اختلافات أخرى:
• يدعم BufferedReader التزامن ، في حين أن الماسح الضوئي لا. إذا تعاملنا مع البرامج المتعددة مؤشرات الترابط ، فيجب استخدام BufferedReader.
• BufferedReader لديه ذاكرة مخزنة كافية بالنسبة للماسح الضوئي.
• يحتوي الماسح الضوئي على عدد قليل جدًا من المخازن المؤقتة (1 كيلو بايت للتخزين المؤقت) بالنسبة إلى BufferedReader (8 كيلو بايت بايت التخزين المؤقت) ، ولكن هذا أكثر من كافية.
• BufferedReader هو أسرع قليلاً من الماسح الضوئي لأن الماسح الضوئي يؤدي تحليل فئة من بيانات الإدخال ، بينما يقرأ BufferEdReader ببساطة تسلسل الأحرف.
ما سبق هو الفرق بين فئة الماسح الضوئي وفئة Bufferreader في Java التي قدمها لك المحرر (مفصل للغاية). آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!