0Pricing
Java Academy · درس

التحقّق من إدخال المستخدم

عالجوا الإدخال غير الصالح بسلاسة

التحقّق من إدخال المستخدم درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.

لا تثق أبدًا بالإدخال

يُدخل المستخدمون أحيانًا قيمًا خاطئة: أحرفًا في مواضع الأرقام، أو فراغات، أو قيمًا خارج النطاق. تتحقق البرامج المتينة من الإدخال وتطلبه مجددًا بدلًا من التوقف بسبب خطأ.

يوضح هذا الدرس أنماطًا للتحقق السلس من الإدخال باستخدام Scanner.

تحقق قبل القراءة

إن أبسط وسيلة للتحقق هي hasNextInt(). لا تقرأ العدد الصحيح إلا عندما يكون متاحًا فعلًا.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42");
        if (scanner.hasNextInt()) {
            System.out.println("Got: " + scanner.nextInt());
        } else {
            System.out.println("Please enter a number");
        }
        scanner.close();
    }
}

التكرار حتى تصبح القيمة صالحة

تستمر حلقة إعادة المحاولة في الطلب حتى يصل عدد صحيح صالح. وعندما يكون الرمز خاطئًا، تجاهله باستخدام next() ثم تابع.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc xyz 50");
        int value = -1;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                value = scanner.nextInt();
                break;
            }
            scanner.next();
        }
        System.out.println("Accepted: " + value);
        scanner.close();
    }
}

التحقق من النطاق

إضافةً إلى النوع، يجب أن تقع القيم غالبًا ضمن نطاق محدد. اقرأ العدد، ثم تحقّق منه قبل قبوله.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("7");
        int n = scanner.nextInt();
        if (n >= 1 && n <= 10) {
            System.out.println("Valid: " + n);
        } else {
            System.out.println("Out of range");
        }
        scanner.close();
    }
}

استخدام Try-Catch عند التحليل

تقرأ طريقة بديلة سطرًا كاملًا ثم تحلله، مع التقاط NumberFormatException للنص غير الصالح. وبذلك يظل المخزن المؤقت بسيطًا.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("notanumber");
        String line = scanner.nextLine();
        try {
            int n = Integer.parseInt(line.trim());
            System.out.println("Parsed: " + n);
        } catch (NumberFormatException e) {
            System.out.println("Invalid number: " + line);
        }
        scanner.close();
    }
}

التحقق من النص غير الفارغ

بالنسبة إلى إدخال النصوص، ارفض النصوص الفارغة. تُرجع isBlank() القيمة true للسلاسل الفارغة أو التي تتكون من مسافات بيضاء فقط.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("   ");
        String name = scanner.nextLine();
        if (name.isBlank()) {
            System.out.println("Name cannot be empty");
        } else {
            System.out.println("Hello, " + name);
        }
        scanner.close();
    }
}

التحقق من اختيار

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("y");
        String choice = scanner.next().toLowerCase();
        if (choice.equals("y") || choice.equals("n")) {
            System.out.println("You chose: " + choice);
        } else {
            System.out.println("Please enter y or n");
        }
        scanner.close();
    }
}

دالة للتحقق قابلة لإعادة الاستخدام

استخرج التحقق في دالة حتى يُعاد استخدام المنطق. تتحقق إحدى الدوال هنا من وقوع العمر ضمن نطاق معقول.

public class Main {
    static boolean isValidAge(int age) {
        return age >= 0 && age <= 120;
    }

    public static void main(String[] args) {
        System.out.println(isValidAge(30));
        System.out.println(isValidAge(-5));
    }
}

الجمع بين النوع والنطاق

يجمع التحقق الفعلي غالبًا بين التحقق من النوع، والتحقق من النطاق، وحلقة إعادة المحاولة ضمن إجراء واحد متين.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc 200 45");
        int valid = -1;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                int n = scanner.nextInt();
                if (n >= 1 && n <= 100) {
                    valid = n;
                    break;
                }
            } else {
                scanner.next();
            }
        }
        System.out.println("Final: " + valid);
        scanner.close();
    }
}

رسائل خطأ واضحة

يوفر التحقق الجيد أيضًا ملاحظات مفيدة للمستخدم. أخبره بالضبط بما كان خاطئًا وما هو متوقع، بدلًا من عرض رسالة فشل عامة.

public class Main {
    static String validate(String input) {
        if (input.isBlank()) return "Input is empty";
        if (!input.matches("\\d+")) return "Only digits allowed";
        return "OK";
    }

    public static void main(String[] args) {
        System.out.println(validate(""));
        System.out.println(validate("12a"));
        System.out.println(validate("123"));
    }
}

استراتيجية التحقق

تحقق من النوع باستخدام مجموعة hasNext أو try-catch، وتحقق من النطاق ومن عدم الفراغ، وكرّر المحاولة حتى تصبح القيمة صالحة، واشرح الأخطاء دائمًا بوضوح.

تحقق سريع

اختبر معرفتك بالتحقق من الإدخال.

مراجعة

لقد تعلمت التحقق من الإدخال بسلاسة:

  • استخدم hasNextInt للتحقق مسبقًا، أو حلّل القيمة داخل try-catch
  • استخدم حلقات إعادة المحاولة، مع تجاهل الرموز غير الصحيحة باستخدام next()
  • تحقق من النطاقات وارفض النصوص الفارغة باستخدام isBlank
  • استخرج دوال تحقق قابلة لإعادة الاستخدام
  • اعرض رسائل خطأ واضحة ومحددة

الأسئلة الشائعة

هل درس «التحقّق من إدخال المستخدم» مجاني؟

نعم — نص درس «التحقّق من إدخال المستخدم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحقّق من إدخال المستخدم»؟

عالجوا الإدخال غير الصالح بسلاسة تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحقّق من إدخال المستخدم»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة الإدخال باستخدام Scanner
  2. قراءة الأعداد والأسطر
  3. التحقّق من إدخال المستخدم
  4. بديل BufferedReader
← العودة إلى Java Academy