الدرس 7 من 10

النصوص

هدف الدرس

equals لا == و StringBuilder

01

الشرح

النصّ كائن من صنف String وله طرق كثيرة: length() بأقواس هنا، وcharAt(i) حرف في موضع، وtrim() تحذف المسافات من الطرفين، وtoLowerCase()، وreplace(" ", "")، وsplit(" +") تقطّع النصّ مصفوفةً عند كل مسافة أو أكثر. والنصّ لا يتغيّر أبدًا: كل هذه الطرق تُرجع نصًّا جديدًا، فـ name.trim(); وحدها لا تفعل شيئًا.

والفخّ الأشهر في Java: == بين نصّين تسأل «هل هما الكائن نفسه؟» لا «هل حروفهما واحدة؟». قد تصيب مع النصوص المكتوبة في الكود، ثم تخطئ مع نصّ جاء من إدخال أو بُني أثناء التشغيل. قارن المحتوى دائمًا بـ a.equals(b)، أو بـ equalsIgnoreCase لتتجاهل حالة الأحرف.

ولأن النصّ لا يتغيّر، فوصله بـ += داخل حلقة يبني نصًّا جديدًا في كل دورة. StringBuilder نصّ قابل للتعديل: append تُلحق به، وreverse() تعكسه في مكانه، وtoString() تُرجع النصّ النهائي.

02

المطلوب

samePlayer(a, b) تُرجع true إن كان الاسمان واحدًا، مع تجاهل حالة الأحرف والمسافات حولهما. وreverseWords(s) تعكس ترتيب الكلمات بـ StringBuilder، بمسافة واحدة بينها مهما كثرت المسافات في الأصل. وisPalindrome(s) تُرجع true إن قُرئ النصّ من طرفيه سواءً، مع تجاهل الحالة والمسافات. ثم اطبع من main ناتج reverseWords("Java runs Minecraft").

معايير التصحيح

6 معايير
  1. samePlayer تقارن الحروف بـ equals لا ==
  2. samePlayer تتجاهل حالة الأحرف والمسافات حول الاسم
  3. reverseWords تعكس ترتيب الكلمات
  4. reverseWords بمسافة واحدة مهما كثرت المسافات
  5. isPalindrome تتجاهل الحالة والمسافات
  6. طُبع: Minecraft runs Java
Main.java
المخرجاتJava 13 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».