قراءة الإدخال باستخدام Scanner
اقرؤوا إدخال المستخدم من System.in
قراءة الإدخال باستخدام Scanner درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
القراءة من لوحة المفاتيح
لقراءة ما يكتبه المستخدم، توفّر Java الصنف Scanner في الحزمة java.util. وتربطونه بـ System.in، وهو مجرى الإدخال القياسي.
يجعل Scanner قراءة الكلمات والأسطر والأرقام أمرًا بسيطًا.
إنشاء Scanner
أنشئوا Scanner بتمرير System.in. تستخدم الأمثلة هنا سلاسل نصية ثابتة كي تعمل من دون إدخال، لكن الأساليب نفسها تنطبق على الإدخال من لوحة المفاتيح.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("Hello");
String word = scanner.next();
System.out.println(word);
scanner.close();
}
}قراءة كلمة واحدة
تقرأ next() رمزًا واحدًا، أي النص حتى المسافة البيضاء التالية. وتفصل المسافات والأسطر الجديدة بين الرموز.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("apple banana cherry");
System.out.println(scanner.next());
System.out.println(scanner.next());
scanner.close();
}
}قراءة سطر كامل
تقرأ nextLine() كل شيء حتى نهاية السطر، بما في ذلك المسافات. استخدموها عندما يحتوي الإدخال على كلمات متعددة تريدون قراءتها معًا.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("John Smith");
String fullName = scanner.nextLine();
System.out.println("Name: " + fullName);
scanner.close();
}
}التحقق من وجود إدخال إضافي
تُعيد hasNext() القيمة true ما دامت هناك رموز إضافية. ويتيح لكم ذلك التكرار حتى ينفد الإدخال.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("red green blue");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}القراءة سطرًا سطرًا
استخدموا hasNextLine() مع nextLine() لمعالجة الإدخال متعدد الأسطر سطرًا واحدًا في كل مرة.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("line one\nline two\nline three");
while (scanner.hasNextLine()) {
System.out.println("> " + scanner.nextLine());
}
scanner.close();
}
}مثال عملي على لوحة المفاتيح
للحصول على إدخال فعلي من المستخدم، ستكتبون الأسطر أدناه. جرّبوها محليًا: ينتظر البرنامج عند nextLine حتى تكتبوا وتضغطوا على Enter.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
scanner.close();
}
}إغلاق Scanner
يؤدي استدعاء close() إلى تحرير المورد. ومن الأساليب الأنظف استخدام try-with-resources، الذي يغلق Scanner تلقائيًا عند انتهاء الكتلة.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner("data here")) {
System.out.println(scanner.next());
}
}
}next مقارنةً بـ nextLine
تذكّروا الفرق الأساسي: تتوقف next() عند المسافة البيضاء وتُعيد رمزًا واحدًا، بينما تلتقط nextLine() بقية السطر الحالي.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("first second third");
System.out.println(scanner.next());
System.out.println(scanner.nextLine());
scanner.close();
}
}فواصل مخصصة
يمكنكم تغيير ما يفصل بين الرموز باستخدام useDelimiter. يفصل الفاصل هنا بين القيم بدلًا من المسافة البيضاء.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("a,b,c");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}أساسيات Scanner
أنشئوا Scanner واحدًا على System.in، واستخدموا next للكلمات وnextLine للأسطر الكاملة، وكرّروا باستخدام عائلة hasNext، وأغلقوه دائمًا.
اختبار سريع
اختبروا أساسيات Scanner لديكم.
مراجعة
تعلّمتم قراءة الإدخال باستخدام Scanner:
- أنشئوه باستخدام
new Scanner(System.in) - تقرأ
next()كلمة، بينما تقرأnextLine()سطرًا كاملًا - كرّروا باستخدام
hasNext()أوhasNextLine() - أغلقوه باستخدام
close()أو try-with-resources - يغيّر
useDelimiterالفاصل بين الرموز
الأسئلة الشائعة
هل درس «قراءة الإدخال باستخدام Scanner» مجاني؟
نعم — نص درس «قراءة الإدخال باستخدام Scanner» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة الإدخال باستخدام Scanner»؟
اقرؤوا إدخال المستخدم من System.in تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «قراءة الإدخال باستخدام Scanner»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الإدخال باستخدام Scanner
- قراءة الأعداد والأسطر
- التحقّق من إدخال المستخدم
- بديل BufferedReader