إذا كنت تريد حساب عدد أحرف الكلمة في Java فالدالة length() في String هي الطريقة المباشرة. يعرض المثال التالي إدخال النص من لوحة المفاتيح ثم طوله:
import java.util.Scanner;
public class WordLength {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("أدخل كلمة أو عبارة: ");
String word = input.nextLine();
System.out.println("الطول: " + word.length());
input.close();
}
}نستخدم nextLine() لقراءة السطر كاملاً بما فيه المسافات. أما next() فتقرأ حتى أول مسافة، لذا تناسب كلمة مفردة فقط. بعد تخزين الإدخال في word نستدعي word.length()، والأقواس ضرورية لأن length دالة. القيمة الناتجة عدد صحيح يمكن استعماله في التحقق من طول كلمة المرور أو ضبط حد للمدخلات.
ما الذي تحسبه length()؟
تمثل Java النصوص باستخدام وحدات UTF-16. لذلك تعيد length() عدد هذه الوحدات، وليس دائماً عدد الرموز المرئية. الأحرف العربية الأساسية غالباً وحدة واحدة، لكن بعض الرموز التعبيرية تحتاج وحدتين. كما أن الحرف مع علامة تشكيل قد يظهر كرمز بصري واحد مع أنه يتكون من أكثر من نقطة Unicode. اعرف معنى «الحرف» الذي يحتاجه تطبيقك قبل اختيار طريقة العد.
عد نقاط Unicode
لعد نقاط Unicode بدلاً من وحدات UTF-16 استخدم codePointCount:
int count = word.codePointCount(0, word.length());
System.out.println("عدد نقاط Unicode: " + count);هذا أدق للرموز التي تمثل بمحرفين، لكنه لا يجمع بالضرورة التتابعات التي يعرضها الخط كحرف واحد. إذا كنت تحتاج عدّ المقاطع الكتابية المرئية، فابحث في BreakIterator من الحزمة java.text واختبر النصوص المستهدفة. في أغلب تمارين المبتدئين، length() كافية وواضحة.
التحقق من النص الفارغ والمسافات
عند قراءة السطر، قد يحتوي الإدخال على مسافات في البداية والنهاية. استعمل trim() قبل الحساب إذا أردت تجاهلها، وافحص الفراغ أولاً:
String word = input.nextLine().trim();
if (word.isEmpty()) {
System.out.println("أدخل نصاً غير فارغ.");
} else {
System.out.println("عدد الأحرف: " + word.length());
}قرار احتساب المسافات يعتمد على الوظيفة. كلمة المرور مثلاً تحسب كل محرف مسموح، أما عدّ حروف عبارة فقد يستبعد الفراغات. وضح ذلك للمستخدم كي لا تبدو النتيجة مفاجئة. لا تستدع length() على قيمة null لأن ذلك يسبب NullPointerException؛ تحقق من القيمة أو ارفضها برسالة واضحة.
عد الأحرف دون المسافات
لإزالة المسافات البيضاء قبل العد يمكن استخدام replaceAll:
String text = "تعلم Java بسهولة";
int count = text.replaceAll("\s+", "").length();
System.out.println(count);النمط \s+ يطابق مسافة أو أكثر، ثم تعيد replaceAll سلسلة جديدة بلا مسافات. النص الأصلي لا يتغير لأن String غير قابل للتعديل. إذا أردت استبعاد علامات الترقيم أيضاً، حددها صراحة بنمط مناسب ولا تحذف محارف عشوائية قد تكون ذات معنى.
تحويل الحساب إلى دالة
يمكن فصل الحساب في دالة لتسهيل إعادة استخدامها واختبارها:
static int countUnits(String value) {
if (value == null) return 0;
return value.length();
}إرجاع صفر عند null خيار تصميم وليس قاعدة عامة؛ قد يكون الأنسب رمي استثناء أو إظهار رسالة تحقق. اجعل السلوك متوافقاً مع واجهة البرنامج، ولا تخفِ الأخطاء التي ينبغي أن يعرفها المستدعي.
أخطاء شائعة واختبار المثال
- كتابة word.length دون الأقواس؛ الصحيح word.length().
- استخدام next() ثم توقع قراءة جملة متعددة الكلمات.
- نسيان أن length() تعد وحدات UTF-16، لا الرموز المرئية دائماً.
- احتساب الفراغات الطرفية دون قصد أو تجاهل الإدخال الفارغ.
اختبر كلمة قصيرة، وعبارة فيها فراغ، ونصاً فارغاً، ورمزاً تعبيرياً، وقارن length() بـ codePointCount. هذه الحالات تكشف افتراضات البرنامج مبكراً. للتوسع راجع دليل Java للمبتدئين، وتصفح شروحات Java والأمثلة العملية. ابدأ بالحل البسيط ثم اختر عدّ Unicode فقط عندما يحتاج التطبيق ذلك فعلاً.
استخدام طول النص في التحقق من المدخلات
من الاستخدامات العملية لهذه الدالة التأكد من أن المستخدم أدخل قيمة ضمن نطاق محدد. على سبيل المثال، يمكن رفض اسم أقصر من ثلاثة أحرف أو رسالة تتجاوز حداً معيناً قبل إرسالها إلى قاعدة البيانات. اجمع بين length() وشرط واضح، ثم أعد طلب الإدخال عند الحاجة. لا تعتمد على التحقق في الواجهة فقط إذا كانت البيانات تصل من شبكة أو مصدر خارجي؛ تحقق منها في طبقة البرنامج أيضاً.
في تطبيقات النماذج، اجعل الحد الأدنى والأقصى معرفين كثوابت حتى يسهل تعديلهما. اطبع القيمة المقاسة أثناء التعلم لتتأكد من أن المسافات والأسطر الجديدة تدخل في الحساب كما تتوقع. وإذا احتجت إحصاءات على فقرة، فحدد أولاً هل المطلوب عدد المحارف أم الكلمات؛ فهما عمليتان مختلفتان ويمكن تقسيم الكلمات عادة باستخدام split بعد تنظيف النص.
خلاصة
تقدم length() حلاً سريعاً لقياس طول String، ويكفي لمعظم أمثلة Java التعليمية. اقرأ الإدخال بالطريقة المناسبة، افحص الفراغات والقيم null، وقرر بوضوح ما إذا كانت المسافات جزءاً من العدد. عندما تتعامل مع Unicode أو واجهات متعددة اللغات، قارن بين length() وcodePointCount واختبر الرموز الخاصة. هذه الممارسات تجعل الكود صحيحاً وأسهل للصيانة.





