دریافت اطلاعات از کاربر یکی از مهمترین بخشهای هر پروژه در زبان برنامهنویسی جاوا است که از اهمیت زیادی برخوردار میباشد. ما در این جلسه از آموزش جاوا قصد داریم درباره این موضوع صحبت کنیم که چگونه میتوانیم اطلاعات موردنیاز برنامه را از کاربر دریافت کنید. برای انجام این کار از کلاسی به نام Scanner استفاده میشود که در ادامه توضیحات جامع و کاملی را درباره این کلاس و متدهای مختلف آن به شما ارائه خواهیم داد.
کلاس Scanner
آشنایی با کلاس Scanner در زبان برنامهنویسی جاوا
کلاس Scanner یک کلاس بسیار مهم در زبان برنامهنویسی جاوا است که در پکیج Java.util به شما ارائه میشود. این کلاس دارای متدهای زیادی است که برای استفاده از آنها باید ابتدا اقدام به ساخت یک شی از این کلاس کنید. در ادامه کدهایی را برای استفاده از این کلاس در اختیار شما قرار داده و توضیحاتی را درباره آنها ارائه میدهیم:
public class Main{
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
byte age = scanner.nextByte();
System.out.println(“ your age is: “ + age);
}
}
در زمان ساخت یک شی از این کلاس شما باید مشخص کنید که میخواهید دادهها را به چه شکل از کاربر دریافت کنید. اگر قصد داشته باشید اطلاعات را از ترمینالی که در بخش پایین صفحه IDE وجود دارد دریافت کنید میتوانید مقدار System.in را در بهعنوان آرگومان به آن بدهید. کلاس Scanner دارای مجموعهای از متدها است که با next شروع میشوند. این دسته از متدها برای دریافت اطلاعات از کاربر مورداستفاده قرار میگیرند. بهعنوانمثال اگر قصد داشته باشید یک داده از نوع byte را از کاربر دریافت کنید میتوانید از متد nextByte() برای انجام این کار استفاده کنید. با اجرای قطعه کد بالا مشاهده میکنید که در خروجی میتوانید یک مقدار را وارد کنید. اگر یک عدد از نوع بایت مثلا 24 را وارد کرده و سپس کلید اینتر را فشار دهید مشاهده میکنید که خروجی زیر برای شما چاپ میشود:
your age is 24
ارتباط بهتر با کاربر
ارتباط بهتر با کاربر در پروژهها
فرمی که در مثال قبل به شما ارائه دادیم چندان جالب نبود و ممکن است کاربر متوجه نشود که در ابتدا باید یک عدد را وارد کرده و سپس اینتر بزند. برای اینکه ساختار بهتری را به خروجی کدهای خود بدهیم بهتر است که قبل از فراخوانی متد next اطلاعاتی را به کاربر ارائه دهیم که این کار را در این جلسه از آموزش جاوا به شکل زیر انجام میدهیم:
public class Main{
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
System.out.println(“Age: “);
byte age = scanner.nextByte();
System.out.println(“ your age is: “ + age);
}
}
با اجرای قطعه کد بالا مشاهده میکنید که ابتدا عبارت زیر برای شما چاپ میشود:
Age:
سپس شما با واردکردن سن (مثلا عدد 24) و سپس اینتر زدن خروجی زیر را مشاهده میکنید:
your age is: 24
دریافت رشته
دریافت یک رشته با استفاده از کلاس Scanner
در این بخش از آموزش جاوا قصد داریم بیشتر درباره دریافت رشته توسط متدهای کلاس Scanner صحبت کنیم. بهطورکلی باید بدانید که برای دریافت رشته با استفاده از این کلاس متدی به نام nextString نداریم و شما برای این کار باید از متد nextLine() استفاده کنید. البته میتوانید برای انجام این کار از متد next() نیز استفاده کنید که این دو متد دارای تفاوتهایی با یکدیگر هستند. در ابتدا به توضیح متد next خواهیم پرداخت. برای آشنایی با این متد قطعه کد زیر را در نظر بگیرید:
public class Main{
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
System.out.println(“name: “);
String name = scanner.next();
System.out.println(“ your name is: “ + name);
}
}
اگر از قطعه کد بالا خروجی بگیرید ابتدا عبارت زیر برای شما ظاهر میشود:
name:
در این جا ما باید یک نام را وارد کنیم:
Hamed ganjeali
و سپس خروجی به شکل زیر خواهد بود:
your name is: Hamed
همانطور که مشاهده میکنید عبارت ganjeali برای ما چاپ نشد. دلیل این موضوع این است که متد next در هر بار فراخوانی تنها یک کلمه یا توکن را از ما دریافت میکند و بهمحض این که یک فاصله بگذارید سایر کلمات یا توکنها را نمیپذیرد. برای جلوگیری از بروز این مشکل شما میتوانید از قطعه کد زیر و متد nextLine() استفاده کنید:
public class Main{
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
System.out.println(“name: “);
String name = scanner.nextLine();
System.out.println(“ your name is: “ + name);
}
}
name:
در این جا ما باید یک نام را وارد کنیم:
Hamed ganjeali
و سپس خروجی به شکل زیر خواهد بود:
your name is: Hamed ganjeali
نکته بسیار مهم دیگری که در این جلسه از آموزش برنامهنویسی جاوا (Java) باید به آن دقت داشته باشید این است که اگر نوع دادهای که کاربر وارد میکند با نوع دادهای که شما برای متغیر خود تعریف کردهاید و متد next را نیز بر اساس همان نوع داده فراخوانی کردهاید سازگاری نداشته باشد کاربر با یک خطا مواجه خواهد شد. بهعنوانمثال اگر شما از nextInt() برای دریافت اطلاعات استفاده کرده باشید و کاربر یک عدد اعشاری را وارد کرده باشد یک Exception برای کاربر نمایش داده میشود و شما باید از راهکارهای مدیریت Exception که در جلسات بعدی این دوره درباره آنها صحبت خواهیم کرد استفاده کنید.
قسمت قبلی آموزش رایگان java :
قسمت بعدی آموزش رایگان java :
یا جهت مشاهده ویدیوهای اموزشی آموزش رایگان جاوا وارد این صفحه شوید.