ورودی کاربر (Java User Input)
دریافت ورودی (Scanner): تعامل با کاربر ⌨️👥
تا اینجا تمام برنامههای ما خروجیمحور بودند. کلاس Scanner به ما اجازه میدهد تا ورودیهای کاربر (متن، عدد و...) را از کیبورد دریافت کنیم و برنامههای تعاملی بسازیم.
۱. راهاندازی اسکنر
این کلاس در پکیج java.util قرار دارد. ابتدا باید آن را وارد کرده و یک شیء از آن بسازیم:
۲. متدهای دریافت ورودی 📥
- nextLine(): دریافت یک خطِ کامل متن (String).
- next(): دریافت فقط یک کلمه.
- nextInt(): دریافت عدد صحیح.
- nextDouble(): دریافت عدد اعشاری.
- nextBoolean(): دریافت true/false.
مثال کامل تعاملی:
{code_block('System.out.println("Enter name:");\nString name = myObj.nextLine();\nSystem.out.println("Name is: " + name);')}nextInt() بخواهید nextLine() بزنید، ممکن است برنامه ورودی متن را نادیده بگیرد (به دلیل کاراکتر اینتر باقیمانده). در چنین مواردی یک nextLine() خالی وسط آنها قرار دهید.
myObj.close(); اسکنر را ببندید تا منابع سیستم آزاد شوند.
try...catch از بسته شدن ناگهانی برنامه در این مواقع جلوگیری کنیم.
بخش تخصصی: معماری سیستمهای شیءگرا 🏗️💎
در این بخش، به مفاهیمی میپردازیم که تفاوت بین یک برنامهنویس معمولی و یک معمار نرمافزار را رقم میزند.
۱. کد تمیز و اصل ابزارمندی (Abstraction)
در پروژههای بزرگ صنعتی، ما سعی میکنیم تا حد امکان وابستگیها (Dependencies) را کاهش دهیم. استفاده درست از Interface و Abstract Class باعث میشود کدهای ما انعطافپذیر باشند. به قولی: "برنامهنویسی برای اینترفیس، نه برای پیادهسازی".
۲. مدیریت پکیجها و جلوگیری از تداخل
پکیجبندی حرفهای فقط برای نظم نیست؛ بلکه برای کنترلِ Visibility است. با استفاده درست از سطوح دسترسی (مثل protected و default) در سطح پکیج، میتوانید از دسترسیهای غیرمجاز به متدهای داخلی کلاسها جلوگیری کنید.
۳. ترکیب به جای وراثت (Composition over Inheritance)
وراثت (Inheritance) ابزار قدرتمندی است، اما استفاده بیش از حد از آن باعث ایجاد "زنجیرههای سفتوسخت" (Tight Coupling) میشود. در بسیاری از موارد، استفاده از ترکیب (داشتنِ یک شیء داخل شیء دیگر) راهحل منعطفتری برای گسترشِ کدهای شماست.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از Scanner، یک عدد صحیح از ورودی بخوانید و آن را ضرب در 2 کرده و چاپ کنید. از شیء sc که تعریف شده استفاده کنید.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n * 2);
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.