نحوۀ استفاده از متدهای کلاس Scanner با مقادیر بازگشتی بولینی در زبان جاوا


در آموزش‌های گذشته دیدیم که چنانچه دادۀ ورودی کاربر با متد مورد استفاده در برنامه و متعلق به کلاس Scanner هم‌خوانی نداشته باشد، اجرای برنامۀ مذکور با خطا مواجه شده و از ادامۀ کار باز می‌ایستد. حال در این آموزش قصد داریم تا متدهای دیگری از کلاس Scanner را معرفی کنیم که به منظور کنترل چنین مسائلی در برنامه‌های نوشته‌شده به زبان جاوا کاربرد داشته و مورد استفاده قرار می‌گیرند. در همین راستا، در ادامه به بررسی نحوۀ عملکرد متدهایی از جنس بولین که متعلق به این کلاس هستند می‌پردازیم تا بدین وسیله چنانچه کاربر دادۀ اشتباهی وارد برنامه کرد به او اخطار دهیم.

ابتدا یک پروژۀ جدید تحت عنوان PassApp ساخته و کلاسی به اسم Project در آن ایجاد می‌کنیم. حال یک سناریوی فرضی تعریف کرده و بر اساس آن برنامۀ مورد نظر خود را پیاده‌سازی می‌نماییم. فرض می‌کنیم که قصد داریم تا اپلیکیشنی تحت وب طراحی نماییم که کاربران به منظور استفاده از این برنامه می‌باید در ابتدا رمز عبور خود را وارد کنند که برای این منظور نیاز داریم تا یک دستور شرطی تعریف نماییم بدین صورت که چنانچه کاربر داده‌ای به غیر از یک عدد صحیحِ چندرقمی وارد برنامه کرد، استرینگی مبنی بر عدم رعایت فرمت درست را در معرض دید وی قرار دهد (در آموزش آتی با جزئیات بیشتری به نحوۀ پیاده‌سازی دستورهای شرطی خواهیم پرداخت.)

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

در زبان برنامه‌نویسی جاوا، یکسری متد متعلق به کلاس Scanner تعریف شده‌اند كه مقدار بازگشتی از جنس بولین داشته و به منظور چک کردن نوع دیتای ورودی از طریق کیبورد مورد استفاده قرار می‌گیرند که از آن جمله می‌توان به متدهای ()hasNextLine و ()hasNextDouble اشاره کرد که به ترتیب به منظور چک کردن نوع دادۀ ورودی از جنس استرینگ و بررسی نوع دادۀ ورودی از جنس عدد اعشاری مورد استفاده قرار می‌گیرند. برای مثال، در صورتی که متد ()hasNextLine در برنامۀ مورد نظر فراخوانی شده و نوع دادۀ ورودیِ کاربر از جنس استرینگ باشد، متد مذکور مقدار true و در غیر این صورت مقدار false را در خروجی ریترن می‌کند. 

دانلود فایل‌های تمرین

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۶/۱۲/۱۶
سلام
بنظرم شما inputpassword.nextint رو فراموش کردین بنویسین
البته شایدم اشتباه میکنم ولی هرچی دقت کردم این نبود
کاربر میهمان
omidمن یک کاربر مهمان هستم
۱۳۹۶/۰۴/۱۸
با سلام چگونه می توان حداقل و حداکثر کاراکتر ورودی را برای کاربر تعین کرد ؟
کاربر میهمان
soroushمن یک کاربر مهمان هستم
۱۳۹۵/۱۲/۱۴
سلام
ممنون از آموزش های خوبتون
چطوری یه کدی بنویسیم که اگر کاربر به جای اعداد صحیح، حرف نوشت برنامه کرش نکنه؟
امین ناطق
امین ناطق
۱۳۹۵/۰۸/۲۷
سلام کل برنامه من درست اجرا میشه ولی در قسمت آخر که else رو داریم فقط این دستور اجرا نمیشه حتی از روی کدی که شما نوشته بودید کپی کردم ولی باز برنامه اجرا نمیشه و زیر این دستور یه خط قرمز میکشه حتی علامت شروع و پایانش رو هم درست نشون میده { } ولی دستور داخل گیومه اجرا نشد هرکاری کردم باز زیر else خط میکشه و دستور داخلش اجرا نشد لطفا راهنمایی بفرمایید.
کاربر میهمان
سجاد مرادیمن یک کاربر مهمان هستم
۱۳۹۵/۰۷/۲۹
سلام
ممنون از آموزش های عالیتون
من توی کلاس اسکنر ورودی رو int خواستم و بعد هم درخواست نمایش عدد رو در کد ها قرار دادم
فقط خواستم امتحان کنم و عدد اعشاری وارد کردم برنامه اکلیپس یه سوال پرسید و من بدون دقت اوکی رو زدم بعدش محیط اکلیپس کلا به هم ریخته
الان نمیدونم چجوری به حالت اول برگردم، اصلا نمیشه باهاش کار کرد
بخش دیباگ روی صفحه ظاهر شده
لطفا کمکم کنید
hooman
hooman
۱۳۹۵/۰۷/۲۲
متوجه اشکال کارم شدم.
واقعا بابت آموزشهاتون ممنونم هر قسمت رو که میخونم کاملا متوجه میشم فوق العاده ساده و روان توضیح داده شده.
hooman
hooman
۱۳۹۵/۰۷/۲۱
سلام و اول اینکه واقعا ممنون بابت آموزشهاتون و زحمتی که کشیدین .
وقتی از else استفاده میکنم syntax error میده انگار اصلا else رو نمیشناسه ! میشه لطفا منو راهنمایی کنین ؟
ممنون
کاربر میهمان
evidentمن یک کاربر مهمان هستم
۱۳۹۵/۰۶/۰۴
سلام .من یه سوال داشتم.سوالم اینه که الان من کد نویسیو که یاد بگیرم واسه لی اوت وطراحی خود برنامه باید چیکار کنم؟
کاربر میهمان
نیمامن یک کاربر مهمان هستم
۱۳۹۵/۰۵/۲۷
حتی امتحان کردم و دیدم میشه متغیر هم تعریف نکرد ، به این شکل کد رو بازنویسی کردم و کار کرد :


import java.util.Scanner;

public class ifClass {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("PLEASE ENTER YOUR PASSWORD : ");


if(input.nextLine().equals("ooo")){

System.out.println("WELCOME TO PROGRAM");

}

else {

System.out.println("INVALID PASSWORD");
}


input.close();

}

}

کاربر میهمان
نیمامن یک کاربر مهمان هستم
۱۳۹۵/۰۵/۲۷
البته بعدش کد رو به صورت زیر بازنویسی کردم و درست شد ، فکر کنم مسئله اینه که ما برای مساوی قرار دادن رشته ها نمی تونیم از عملگر == استفاده کنیم و حتما باید از .equals استفاده بشه .


import java.util.Scanner;

public class ifClass {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("PLEASE ENTER YOU PASSWORD : ");

String password = input.nextLine();

if (password.equals("ooo")) {

System.out.println("WELCOME TO PROGRAM :) ");
}

else {
System.out.println("INVALID PASSWORD :(");
}

input.close();

}

}