🎯 مدخلات المستخدم في جافا: كيف تجعل برامجك تفاعلية؟ 🤔

في عالم البرمجة، لا تكون التطبيقات مفيدة حقاً إلا إذا استطاعت التفاعل مع المستخدم! اليوم سنتعلم كيفية أخذ مدخلات من المستخدم في جافا، مما سيمكنك من إنشاء برامج تفاعلية حقيقية.


📦 استيراد واستخدام فئة Scanner

لأخذ مدخلات المستخدم في جافا، نستخدم فئة Scanner الموجودة في الحزمة java.util. أولاً، نحتاج إلى استيرادها وإنشاء كائن منها:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
    }
}

الكلمة System.in تعني أننا نريد أخذ المدخلات من لوحة المفاتيح (الإدخال القياسي).


⌨️ قراءة أنواع البيانات المختلفة

يحتوي كائن Scanner على عدة طرق لأخذ أنواع مختلفة من المدخلات:

قراءة النصوص:

System.out.print("أدخل اسمك: ");
String name = input.nextLine();
System.out.println("مرحباً " + name + "!");

قراءة الأرقام الصحيحة:

System.out.print("أدخل عمرك: ");
int age = input.nextInt();
System.out.println("عمرك هو: " + age);

قراءة الأرقام العشرية:

System.out.print("أدخل طولك: ");
double height = input.nextDouble();
System.out.println("طولك هو: " + height + " متر");

⚠️ الانتباه لمشكلة nextLine() بعد nextInt()

هناك مشكلة شائعة يجب أن تنتبه لها: عند استخدام nextInt() أو nextDouble() ثم nextLine()، قد لا يعمل البرنامج كما تتوقع:

System.out.print("أدخل عمرك: ");
int age = input.nextInt(); // المستخدم يدخل 25 ثم يضغط Enter

System.out.print("أدخل اسمك: ");
String name = input.nextLine(); // هذه السطر قد لا يعمل!

الحل: أضف input.nextLine() إضافية لامتصاص Enter الزائد:

System.out.print("أدخل عمرك: ");
int age = input.nextInt();
input.nextLine(); // هذه السطر تحل المشكلة

System.out.print("أدخل اسمك: ");
String name = input.nextLine();

🎮 مثال عملي متكامل

لنطبق ما تعلمناه في برنامج بسيط يجمع المعلومات الشخصية:

import java.util.Scanner;

public class UserInfo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.println("🐱‍💻 برنامج جمع المعلومات الشخصية");
        System.out.println("==============================");
        
        System.out.print("🔹 أدخل اسمك: ");
        String name = input.nextLine();
        
        System.out.print("🔹 أدخل عمرك: ");
        int age = input.nextInt();
        input.nextLine(); // حل مشكلة Enter
        
        System.out.print("🔹 أدبل طولك (بالأمتار): ");
        double height = input.nextDouble();
        input.nextLine(); // حل مشكلة Enter
        
        System.out.print("🔹 أدخل مدينتك: ");
        String city = input.nextLine();
        
        System.out.println("\n🎉 شكراً لك " + name + "!");
        System.out.println("📊 معلوماتك:");
        System.out.println("العمر: " + age + " سنة");
        System.out.println("الطول: " + height + " متر");
        System.out.println("المدينة: " + city);
    }
}

💡 نصائح مهمة للمبتدئين

  1. تأكد من استيراد java.util.Scanner في بداية ملفك
  2. استخدم رسائل توضيحية تخبر المستخدم بما يجب إدخاله
  3. جرب البرنامج بنفسك وأدخل قيم مختلفة لترى كيف يعمل
  4. لا تنسى input.nextLine() الإضافية بعد nextInt() أو nextDouble()