معرفی کلاس اسکنر در زبان برنامه نویسی جاوا


در طراحی برنامه های کاربردی زمان های بسیاری برای ما پیش خواهد آمد که نیاز داریم تا کاربر بخشی از اطلاعات ورودی را از طریق صفحه کلید وارد برنامه کند تا بر اساس اطلاعات ورودی، برنامه طراحی شده نتیجه مرتبط را به کاربر اعلام کند.

برای این منظور می بایست با کلاس Scanner در زبان برنامه نویسی جاوا آشنا شویم. در حقیقت این کلاس در API زبان برنامه نویسی جاوا تعبیه شده است و ما صرفاً با Import کردن این کلاس و همچنین ساخت یک شیئ از روی آن، می توانیم از قابلیت های آن استفاده کنیم. برای روشن شدن این مطلب پروژه ی جدیدی در اکلیپس تحت عنوان ScannerIntro ایجاد می کنیم. سپس کلاسی تحت عنوان Project در آن ایجاد می کنیم (کلیه نام ها اختیاری می باشند.) در ابتدا برنامه ما می بایست به شکل زیر باشد:

class Project {
    public static void main(String[] args) {

    }
}

در حقیقت از آنجا که نیاز داریم تا برنامه ما یک نقطه شروع داشته باشد، همانطور که در جلسات گذشته توضیح داده شد& در حین ایجاد کلاس گزینه public static void main را تیک می زنیم. در این برنامه ما نیاز داریم تا این امکان را به کاربر خود بدهیم تا بتواند از طریق صفحه کلید اطلاعات را وارد برنامه کند، از اینرو کلاس Scanner را وارد برنامه خود می کنیم و نامی به دلخواه همچون myScanner برای آن در نظر می گیریم. به تصویر زیر توجه کنید:

محیط برنامه نویسی اکلیپس با قرار دادن نقطه چین دوره واژه های Scanner و همچنین قرار دادن یک علامت ستاره کنار نام فایل ما -همان طور که در تصویر فوق مشاهده می شود- به ما اخطار می دهد که مشکلی در برنامه وجود دارد. به منظور یافتن راه حل موس خود را روی علامت نقطه چین نگه می داریم و باکسی همچون تصویر زیر مشاهده خواهیم کرد:

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

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
    }
}

(لازم به ذکر است که به جای Import کردن توسط محیط برنامه نویسی اکلیپس، می توانیم خودمان نیز کدهای Import مورد نیاز را به صورت دستی وارد برنامه کرده و یا پس از استفاده از یکی از کلاس های API جاوا همچون کلاس Scanner کلیدهای Ctrl و Shift و حرف O را به طور هم زمان فشار دهیم که با این کار فرآیند Import انجام خواهد شد.)

پس از Import کردن، همان طور که در کد فوق مشاهده می شود یک خط کد ;import java.util.Scanner به ابتدای سورس کد پروژه ی ما اضافه می شود. از این پس، بعد هر چند بار که نیاز داشته باشیم می توانیم بدون هیچ مشکلی از روی کلاس Scanner یک شیئ جدید ساخته و آن را مورد استفاده قرار دهیم (نحوه ساخت اشیاء در زبان جاوا به طور مفصل در آموزش های آتی مورد بررسی قرار خواهد گرفت.)

واژه ی Scanner نشانگر یک کلاس در زبان جاوا است که از پیش نوشته شده است و ما صرفاً آن را وارد برنامه خود می کنیم. واژه myScanner یک نام است به معنی کلاس اسکنر من که ما به صورت دلخواه برای نام شیئ ساخته شده از روی کلاس Scanner در نظر می گیریم. پس از علامت = با نوشتن کلید واژه ی new ما از اکلیپس می خواهیم که یک شیئ جدید از کلاس Scanner تحت عنوان myScanner برای ما ایجاد کند. حال پارامترهایی که داخل پرانتز قرار دارند عبارتند از کلید واژه System که حاکی از کلاسی است که این امکان را به جاوا می دهد که هرآنچه خارج از اختیار JVM بود وارد برنامه شود و کلید واژه in که موجب می گردد ورودی کامپیوتر یا لپ تاپ ما مورد استفاده این کلاس قرار گیرد که این ورودی همان صفحه کلید می باشد. حال می توانیم برنامه خود را تست کنیم. برای این منظور کد خود را به شکل زیر تکمیل می کنیم:

import java.util.Scanner;
class Project {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println(myScanner.nextLine());
    }
}

در حقیقت با این دستور جدید که وارد برنامه خود کردیم، قصد داریم هر آنچه را که از طریق صفحه کلید وارد می کنیم برای ما مجدد نمایش داده شود. داخل دستور ;()System.out.println ما نام شیئ که از روی کلاس Scanner ایجاد کردیم را نوشته سپس متدی تحت عنوان ()nextLine ضمیمه آن می کنیم. به طور خلاصه کار این متد آن است که هر نوع ورودی از طریق صفحه کلید را وارد برنامه کند. حال اگر بخواهیم ورودی خاصی از صفحه کلید را مد نظر داشته باشیم بایستی از متد مخصوص همان داده ورودی استفاده کنیم.

متد ()nextLine حاکی از آن است که هر آنچه را وارد صفحه کلید کنیم به شکل یک string یا رشته در کنسول نمایش داده شود. برای مثال برنامه را اجرا کرده، سپس در بخش کنسول، نشانگر موس خود را مشاهده می کنیم که چشمک می زند به معنی این که می توانیم در آن چیزی وارد نماییم. جمله ای به دلخواه مثل My name is Behzad Moradi را وارد می کنیم سپس دکمه Enter را می زنیم و مشاهده می کنیم که دقیقاً همان چیزی را که از طریق صفحه کلید وارد برنامه کردیم را نمایش خواهد داد:

پس از آشنایی با یکی از کلاس های مفید در زبان برنامه نویسی جاوا، در قمست آتی خواهیم دید که چگونه می توان نوع ورودی داده را برای این کلاس از پیش تعیین کرد به طوری که کاربر فقط و فقط اجازه داشته باشد همان داده ای که از وی خواسته شده است را وارد برنامه کند.

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
7sabzian7
7sabzian7
(این نام می بایست با نام فایلی با پسوند java. که در این مرحله ایجاد می گردد یکسان باشد که اکلیپس این کار را به صورت خودکار برای ما انجام خواهد داد.)

سلام شما دقیقا در فصل های قبلی این نکته رو ذکرکردین که نام کلاس باید با نام فایل .java یکی باشد ولی در این صفحه نام پروژه با نام کلاس فرق داشت چرا؟
mahtab.rashidi
mahtab.rashidi
سلام. وقت بخیر
ممکنه بفرمایید فایل تمرین چجوری باز میشه؟
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام ، خسته نباشید
موقع ایمپورت کردن با این ارور مواجه میشم : The type com.sun.java_cup.internal.runtime.Scanner is not accessible
چه طور میشه برطرفش کرد ؟
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام.بسیار عالی .خسته نباشید.لطفن بفرمایید فایل تمرین و با چی باید باز کنیم که نمایش داده بشه؟
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام
باتشکر از اموزش های عالی
یه موردی که میشه اضافه بشه این هستش که صفحات اموزش شماره گذاری بشن
چون ممکنه یه زمانی اشتباها سایتو ببندیم و فرضا اواسط اموزش باشیم
اون موقع بجای اینکه روومثلا صفحه ۴۰بزنیم باید ۴۰بار دکمه نکست رو بزنیم
موفق باشید
hadimotamedi44
hadimotamedi44
با سلام و خسته نباشید خدمت دوستان سکان آکادمی
ممنون از آموزشای عالیتون
کاربر میهمان
SFمن یک کاربر مهمان هستم
سلام من به صورت زیر انجام میدم ولی جواب نمیده میشه راهنمایی کنید
import java.util.Scanner;

public class Project {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println(myScanner.nextLine(My name is Behzad Moradi:));
}

}
کاربر میهمان
SFمن یک کاربر مهمان هستم
import java.util.Scanner;

public class Project {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println(myScanner.nextLine(My name is Behzad Moradi:));
}

}
کاربر میهمان
Fffمن یک کاربر مهمان هستم
In computer science, a resource leak is a particular type of resource consumption by a computer program where the program does not release resources it has acquired. This condition is normally the result of a bug in a program.
در علوم رایانه ای، نشت منابع ، نمونه خاصی از استفاده منابع توسط برنامه های رایانه ای میباشد که برنامه، منابع بدست اورده رو ازاد نمیکنه! این وضعیت به طور معمول ناشی از وجود خطا در برنامه میباشد.
کاربر میهمان
Fffمن یک کاربر مهمان هستم
Resource leak!! نشت منابع؟؟
یعنی چی؟