وبلاگ سید جلال سیدیزدی

تمرین یازدهم

جمعه, ۸ فروردين ۱۳۹۳، ۱۲:۱۷ ق.ظ
سلام دوستان

در این تمرین با چگونگی استفاده از داکیومنت جاوا و نیز کلاس String بیشتر آشنا می شوید.
هدف نوشتن کلاسی است که متدهای زیر را داشته باشد:

الف) رشته ای دریافت کرده و تعیین کند آیا با حرف صدادار شروع شده است یا نه.
ب) رشته ای دریافت کرده و تعیین کند آیا به حرف صدادار ختم شده است یا نه.
ج) رشته ای دریافت کرده و تعیین کند آیا  دارای حرف صدادار  است یا نه.
د) رشته ای دریافت کرده و محل حروف صدادار را در صورت وجود چاپ کند.
ه) رشته ای دریافت کرده و حروف بزرگ آن را به حروف کوچک تبدیل کند.
و) رشته ای دریافت کرده و حروف کوچک آن را به حروف بزرگ تبدیل کند.
ز) رشته ای دریافت کرده و حروف بزرگ آن را به حروف کوچک و حروف کوچک آن را به حروف بزرگ تبدیل کند.
ح) رشته ای دریافت کرده و تعداد کلمات آن را چاپ کند.
ط) رشته ای دریافت کرده و کلمات آن را از آخر به اول چاپ کند. به مثال زیر توجه کنید.
"I like Java"  ==>   "Java like I"
* برای قسمت ح و ط فرض کنید که بین کلمات Space قرار دارد.
* برای انجام این تمرین حتما متدهای کلاس String را در داکیومنت جاوا یا لینک زیر مطالعه نمایید.


موعد ارسال: 10 فروردین 93 ساعت 21
با تاخیر: 11 فروردین 93 ساعت 20

موفق باشید.
  • ۹۳/۰۱/۰۸

نظرات  (۱۲)

سلام
استاد این کد چرا مشکل داره ?
i

input.startWith("a") ||("u")
پاسخ:

سلام
چون عمل || (یای منطقی) داره روی یک عبارت منطقی یعنی

input.satrtWith("a")

و یک رشته یعنی "u" اعمال می شود.

عملوندهای || باید هر دو از نوع منطقی باشند نه رشته.

موفق باشید.

سلام. همچین رشته ای رو چه جوری باید متد های  ح  و  ط  رو باید روش پیاده کرد ؟


مثال : "   21232  Ali reza @@   "

پاسخ:
سلام همانطور که گفته شد فرض کنید بین کلمات یک یا چند space قرار دارد.
بدین ترتیب رشته ی بالا 4 کلمه دارد.
موفق باشید
سلام . برای متد اخر  باید یک String  مثلا  i am تعریف کنیم بعد یک String دیگه am i تعریف کنیم اونوقت این ها رو با هم replace کنیم؟
بعد  متد trim دقیقا چه کار می کنه ؟
پاسخ:
سلام
باید با استفاده از یکی از متدهای کلاس String به نحوی کلمات رو از هم جدا کنید و بعد انها را از اخر به اول در رشته ای قرار دهید.
متد trim کاراکترهای سفید رو ازدو طرف رشته حذف می کند.
موفق باشید.
ببخشید چه طوری چک کنه کارکتر حرفیه؟ آخه کد اسکی کارکتر ها تو یک بازه ای هست؟
پاسخ:

سلام
لطفاً تا اطلاع ثانوی کد اسکی رو فراموش کنید!
برای بررسی اینکه یک کاراکتر مثلاً حرفی است، خودش را با حرف مقایسه کنید، نه اینکه کد اسکی اون رو با کد اسکی حرف مقایسه کنید.

if(s.charAt(i) >= 'a' && s.charAt(i) <= 'z'){
System.out.println("alphabet");
}

موفق باشید.

سلام. در مورد متد الف اگر اول رشته عدد یا space یا @ و... باید همین ها رو چک کنه یا انقدر بره جلو تا به حرف برسه؟ بعدش چه جوری باید این ها رو رد کنه؟
و یا این که همین که space رو با متد trim برداریم کافیه ؟
پاسخ:
سلام
space رو با متد trim برداره کافیه. ولی می تونید جوری متد رو بنویسید که به اولین کاراکتر حرفی برسه و بعد بررسی کنید ببینید صدادار است یا نه. در یک حلقه با متد charAt کاراکترها رو بررسی کنید.
موفق باشید.
سلام  استاد
1) متد روبرو :  د) رشته ای دریافت کرده و محل حروف صدادار را در صورت وجود چاپ کند.
دقیقا باید چیکار کنه ؟ یعنی باید محل همه ی حروف صدار دار رو چاپ کنه ؟ بعد باید محل حروف رو جداگانه چاپ کنه  مثلا a رو جدا و  e  رو جدا چاپ کنه ؟
2) یه سوال دیگه داشتم اونم در مورد CharSequence هستش . من مطلبش رو خوندم اما چیز زیادی نفهمیدم . چه کاربردی داره ؟ چجوری تعریف میشه ؟
 ممنون !
پاسخ:
سلام

1) اینکه چطوری چاپ کنه با خودتون. ولی چاپ کنه.
2) CharSequence یک اینترفیس است که کلاس String آن را پیاده سازی کرده. احتمالاً درک این جمله در حال حاضر ثقیل است چون به مبحث وراثت مربوط می شه که هنوز نرسیدیم. نتیجه گیری: در این تمرین باهاش کاری ندارید!

موفق باشید.

سلام استاد . 1-به نظرم در این تمرین به این کارها نیاز هست مثلا در متدی که قراره حروف کوچک رو به بزرگ تبدیل کنه اگر کد حرف مورد نظرمون در یک محدوده خاصی باشه باید ازش 32 تا کم کنه بعد حاصل رو که از نوع int است دو باره به charتبدیل کنه . 2-و یه نکته دیگه من اون رشته ای که در متد هام می گیرم از این طریق (char[]a=abc.toCharArray();)تبدیل به ارایه ای از کاراکتر ها می کنم و بعد ازش استفاده می کنم  خوب این جوری هم از توابع string استفاده شده دیگه ایا اشکالی دارد این روش؟
3- و در مورد اون متدی که قراره تعداد کلمات رو چاپ کنه من این جوری نوشتم که هر موقع به space رسید مقدار conterرو یکی اضافه کنه در حالت کلی این روش درسته اما ممکنه حالت هایی هم پیش بیاد که غلط شه مثلا اگر داشته باشیم i                 am این دو کلمه بیشتر نیست ولی چون بینش تعدادی spaceخورده تعداد رو بیشتر نشون می ده حالا باید متد رو با در نظر گرفتن این حالات نوشت؟

پاسخ:
سلام

روشی که شما بیان کردید هر چند درسته ولی بیشتر در زبان C کاربرد داره چراکه با سطوح پایین برنامه نویسی سر و کار داره.
همون طور که سر کلاس بیان شد، پکیج های جاوا شامل تعداد زیادی کلاس است که به دقت (هم از نظر صحت و هم از نظر کارایی) نوشته شده است. یک برنامه نویس حرفه ای نباید و نمی تواند وقت خودش را صرف جزئیات کار کند. بلکه یکی از مهارت های یک برنامه نویس ماهر توانایی استفاده از کتابخانه ها یا همان پکیج های از قبل نوشته شده است.
برای انجام این تمرین کارهایی که گفتید را انجام ندهید. شما آنها را قبلاً انجام داده اید (در مبانی). قرار است در این درس چیز جدیدی یاد بگیرید نه اینکه فقط همان برنامه را به زبان جدیدی بنویسید.

موفق باشید.
سلام استاد خسته نباشید
برای این تمرین ففط باید یک کلاس تعریف کنیم دیگه نه؟
پاسخ:
سلام ممنون
در BlureJ بله.
در netbeans یک کلاس ساده دیگر بنویسید که از کلاس اصلی استفاده کند و متدهای آن را امتحان کند.

موفق باشید.
سلام
چه طور می شه یک کد رو به کاراکتر معادلش تبدیل کرد مثلا می خواهیم بدونیم کد 90 مختص کدوم حرف الفبا است؟
پاسخ:

سلام
برای این کار کافیه عدد رو با استفاده از type casting به کاراکتر تبدیل کنید:

char ch = (char) 97;
System.out.println(ch);

البته برای انجام تمرین یازدهم به این کارها نیاز نیست. پاسخ های سوال های دیگر را نیز ببینید.

موفق باشید.

سلام 
استاد میشه در مورد متد هایی ک باید ازشون استفاده کنیم یکم راهنماییمون کنید؟؟
پاسخ:
سلام

شما باید با توجه به نیاز برنامه تون از متدهای کلاس String استفاده کنید. اینکه دقیقاً از کدام متد باید استفاده شود جزء تمرین است. همه ی متدها را بررسی کرده و عملکردشون رو درک کنید. سپس برای هر تمرین ببینید کدام متد می تواند به شما کمک کند.

موفق باشید.
سلام
استاد واسه همچین تمرینی چطوری کلاس تعریف کنیم

پاسخ:
سلام
مثل بقیه کلاس ها!
باید به دو پرسش پاسخ دهید:
  • کلاس چه فیلدهایی دارد؟
  • کلاس چه متدهایی دارد؟
البته جواب سوال دوم مشخص است.
سوال اول هم فکر زیادی نمی خواهد.

برای امتحان متدهای این کلاس، یک کلاس ساده بنویسید که رشته ای دریافت کرده و به متد کلاس اصلی بدهد.
موفق باشید.

بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است
سلام . خسته نباشید
در یک کلاس که سازنده اش  یک رشته را دریافت می کند یک متد داریم که یک شته گرفته و اون رو با استفاده از toCharArray به ارایه ای از کاراکتر ها تبدیل می کنه (عمل کرد این متد درسته؟) * ** **** **** ** **** ****** ** ** **** **** ****** * *** *** ** *** ***** ***** *** *** **** ** *** ***** *** ***** ***** **** **** ** ****

**** *****
****** ***** ****** *
    ******* ****** ****
   
    ****** ************* *****
        *************
    *
    ****** ****** *************** ****
      **** *********************
      ***********************
      ****** **
    *

**** *****

****** ***** ******** *

    ****** ****** **** ************* ***** *
       ****** ***** **************
       *************
    *

پاسخ:
سلام، ممنون

برای انجام این تمرین نیازی نیست رشته را به آرایه ای از کاراکترها تبدیل کنید.
قبل از هر کار متدهای کلاس String را بررسی کنید و کارکردشان شان را درک کنید. تقریباً تمام کارهای خواسته شده به طور مستقیم یا غیر مستقیم با متدهای کلاس String انجام می شود.

سوال: آیا سازنده باید رشته دریافت کند یا متدها؟

موفق باشید.