وارد کردن آرگومانها در یک برنامه کنسول
در این درس نحوه نمایش یک عنصر از یک آرایه رشتهای در خروجی مورد بحث و بررسی قرار گرفته است، به این معنا که عنصری از آرگومان ورودی تابع main کلاس را در خروجی نمایش دهیم. کلیه تنظیمات یاد شده با استفاده از command prompt محیط ویندوزی صورت میگیرد.
فهرست مطالب
نمایش یک عنصر از آرایه رشتهای در خروجی
در این بخش از آموزش میخواهم به شما نشان بدهم که چطور میشود یک عنصر از یک آرایه رشتهای را در خروجی نمایش بدهید. در واقع هدف کلی این آموزش این است که بیاییم عنصری از آرگومان ورودی تابع main کلاس را در خروجی نمایش بدهیم. همانطور که قبلاً هم توضیح دادیم؛ آرایه رشتهای، یعنی مجموعهای از رشتههای پشت سر هم، در واقع وقتی یک تعداد رشته را پشت سر هم قرار بدهیم آرایهای از رشتهها را خواهیم داشت. و تعداد آن رشتهها میشود طول آرایه ما.
وقتی شما یک کلاس جاوا را شبیه ویدئویِ آموزشی قبلی از کنسول یا command prompt اجرا میکنید، میتوانید در زمان اجرا آرگومانهایی برای متد main وارد کنید، مثلاً میتوانید بیایید و رشتهای به عنوان مقادیرِ آرگومان ورودیِ آن متدِ main وارد کنید.
ویرایش سند جاوا در Notepad
در این بخش از آموزش من از فایل Main.java در فولدر Arguments واقع در فایلهایِ تمرینیِ این فصل از آموزش استفاده میکنم. میتوانید این را یکبار دیگر با هر ویرایشگر متنی که مایل بودید باز کنید؛ و مشخصاً من آنرا مثل قبل با نتپد باز میکنم.
وقتی این را از طریق کنسول اجرا بگیریم، میتوانید مقادیر رشتهای را وارد کنید و آن مقادیر در این آرایه از رشتهها که قبلاً تعریف کردیم، قرار میگیرد.
برای اشاره به یک عنصر از آرایه رشتهای باید اول نام آرایه را ذکر کنید و بعد یک جفت براکت قرار بدهید. بعد باید با دادن یک عدد به عنوان آدرس عنصر، در داخل براکت به عنصر مربوطه اشاره کنید. در حقیقت عدد داخل براکت یا همان آدرس عنصر، نشان دهنده این است که منظور ما چندمین عنصر از آرایه است. هر عنصر از آرایه را که خواستیم در خروجی نمایش بدهیم ایندکس آنرا داخلِ براکت وارد میکنیم. مثلاً فرض کنید یک آرایه داشته باشیم با نام name به این صورت
java learning thaco
این آرایه رشتهای سه عنصر دارد که عنصر اول آن میشود java، عنصر دوم آن میشود learning، عنصر سوم میشود thaco. حالا مثلاً برای اشاره به عنصر سوم آن باید به این شکل عمل کرد:
name[2]
حالا چرا داخل براکت 2 گذاشتم؟ چون در جاوا شماره عناصر از صفر شروع میشود و در واقع ایندکس اولین عنصر آرایه صفر است. دومی 1 و به همین ترتیب.
آرایه name ما به این صورت میشود:
name:[java, learning, thaco]
پس برای مثال اگر خواستید مقداری را در خروجی نشان بدهید، که آن مقدار اولین آرگومان وارد شده در command line باشد، به این صورت عمل میکنیم،:
اول از هر چیزی یکبار دیگر از دستور System.out.println استفاده میکنم، پس من عبارتِ مشابه موجود در سند را کپی و در خطِ بعدی پاست می کنم.
و بعد عبارت args[0] را به آن میدهم. یعنی بجایِ عبارتِ “Hello from Java!” تایپ می کنم args . بعد هم یک براکت باز میکنم و داخل آن تایپ میکنم صفر و نهایتاً هم از براکت بسته استفاده میکنم.
System.out.println(args[0]):
یعنی اولین آیتم از آرایه که با ایندکس صفر به آن اشاره کردم.
در جاوا همیشه برای نشان دادن اولین عنصر آرایه از ایندکس صفر استفاده میشود.
اجرا کلاس جاوا از کنسول یا command prompt
من این تغییرات را ذخیره میکنم و بعد یکبار دیگر به command prompt میروم، طبق معمول اینکار را هم با زدن دکمه ویندوز و R از صفحه کلید و تایپِ عبارتِ cmd در پنجره Run و بعد هم زدنِ OK انجام میدهم.
خب؛ مسیرِ فایلِ تمرینی را وارد میکنم و نهایتاً هم با تایپِ دستورِ dir اینتر را میزنم و سپس به فولدر مورد نظر، که فایلِ ویرایش شده چند لحظه پیش را در آنجا قرار دادم؛ میروم. خب همانطور که میبینید اینجا مشخص است که فایل Main .java را دارم، و با دستور javac Main.java آنرا کامپایل میکنم، برایِ اینکار اینتر را میزنم، و بعد در خطِ جدید با تایپِ java Main و در ادامه آن هم با وارد کردن یک مقدار MyArgument اینتر را میزنم و آنرا اجرا میکنم.
javac Main.java
java Main MyArgument
توجه داشته باشید من یک رشته تکی بدون هیچ اسپیسی را وارد کردم، و این مقدار را که مشاهده میکنید به عنوان خروجی دریافت کردم.
حالا، همان کارا را یکبار دیگر انجام میدهم، ولی یک اسپیس وسط آن میگذارم، یعنی در خطِ جدید تایپ میکنم java فاصله، Main فاصله، My و اینبار یک فاصله، و نهایتاً هم Argument را تایپ میکنم؛ اگر اینتر بزنم میبینید که اینبار فقط قسمت اول رشته به عنوان خروجی چاپ میشود، یعنی My، و دلیل آن هم این است که رانتایم جاوا با استفاده از کاراکتر اسپیس، که به عنوان یک جداکننده عمل میکند، مقادیر را از هم مجزا میکند.
java Main My Argument
اگر بخواهم این دو مقدار را یعنی My و Argument را با هم به عنوان یک تک آرگومان در نظر بگیرم، میتوانم رشته را داخل دابل کوتیشن بگذارم، یعنی در خطِ جدید تایپ میکنم java فاصله، Main فاصله دابل کوتیشن My ؛ فاصله، Argument و باز هم دابل کوتیشن را تایپ میکنم و اگر اینتر بزنم میبینید این دفعه خروجی من؛ بصورتِ یکجا و واحد میشود My Argument با یک فاصله؛ یعنی همان رشتهای که داخل دابل کوتیشن قرار دادم.
java Main "My Argument"
حالا، اگه بخواهیم کد خود را بدون دادن هیچ مقداری اجرا کنیم، یعنی فقط با تایپ java Main، ببینیم چه اتفاقی میافتد، خب میتوانیم اینکار را امتحان کنیم.
پس تایپ میکنم java Main و بعد از زدنِ اینتر میبینیم که یک عبارت برمیگرداند.
java Main
و این عبارت یک نوعِ خاص از استثناها یا exception محسوب میشود، گاهی پیش میآید که در کدنویسی به عنصری یا رشتهای اشاره میشود که آن عنصر وجودِ خارجی ندارد. و در این حالت یک exception یا استثناء رخ میدهد.
در آموزشهای بعدی در مورد اینکه این مدل استثناها چطوری کار میکنند بیشتر توضیح میدهم.
ولی فقط بدانید، که اگر کدی شبیه این دیدید، بدانید که این استثنا مربوط میشود به یک مقداری داخل یک آرایهای، در واقع اگر سعی کنید به یک مقدار داخل یک آرایه آدرسدهی کنید و بخواهید از آن استفاده کنید، مثلاً بخواهید در خروجی آنرا نمایش بدهید و آن مقدار وجود نداشته باشد، باعث میشود با اینچنین کدی رو به رو شوید، و برنامه شما به همین راحتی از ادامه فعالیت خود Stop میشود. به طور کلی اگر دسترسی به یک مقدار داخل یک آرایه به هر نحوی غیر ممکن باشد و شما سعی کنید به آن دسترسی پیدا کنید با این ارور مواجه میشوید.
و به اصطلاح به این استثنا fatal exception گفته میشود، یعنی استثنا کشنده، و تا وقتی که شما ارور مربوطه را رفع نکنید، برنامه نمیتواند به کار خود ادامه بدهد.