در آموزشهای قبل با برخی از متدهای کلاس Scanner
آشنا شده و نحوۀ پیادهسازی هر یک را در قالب یکسری مثال مورد بررسی قرار دادیم و در این آموزش قصد داریم تا ببینیم هر یک از متدهای مذکور در یک پروژۀ واقعی چگونه مورد استفاده قرار گرفته و چه کاربردی میتوانند داشته باشند.
در همین راستا، سناریویی مد نظر قرار میدهیم که طی آن برنامهای طراحی خواهیم کرد تا قابلیت محاسبۀ دخل و خرج کاربر را داشته باشد به طوری که مقادیر مربوط به مخارجی نظیر اقساط، بدهیها، هزینۀ آب، برق، تلفن و غیره را دریافت کرده و پس از کسر مجموع مخارج از درآمد ماهیانه، باقیمانده را در خروجی چاپ کند که برای این منظور پروژهای جدید تحت عنوان MyFinancialTurnover ایجاد کرده و کلاسی تحت عنوان Project
در آن میسازیم. اکنون کد خود را جهت دریافت ورودی از کاربر و همچنین چاپ عنوان برنامه در قالب استرینگی به صورت زیر تکمیل مینماییم:
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
System.out.println("My Financial Turnover");
Scanner myScanner = new Scanner(System.in);
}
}
به محض اجرای این برنامه، پس از رسیدن به سطر چهارم استرینگ «My Financial Turnover» در کنسول چاپ میگردد که در اینجا کیورد System
به منظور دسترسی به بخشهایی از سیستم مورد استفاده قرار میگیرد که ماشین مجازی جاوا امکان دسترسی به آنها را ندارد و کیورد out
نیز به بخش خروجی در محیط برنامهنویسی مورد نظر (در اینجا بخش کنسولِ نرمافزار اکلیپس) دسترسی داشته و استرینگ مد نظر را در آن چاپ میکند. در ادامه، آبجکتی تحت عنوان myScanner
از روی کلاس Scanner
تعریف کرده و با استفاده از دستور System.in
امکان دریافت ورودی از سمت کاربر را برای برنامۀ خود فراهم میکنیم که در این مورد نیز کیورد in
نیز به منظور دسترسی به بخش مربوط به دریافت ورودی از محیط برنامهنویسی مد نظر (کیبورد) به کار گرفته میشود.
حال به منظور ذخیره و نگهداری دیتای مربوط به میزان درآمد و هزینههای جاری کاربر، نیاز به تعریف متغیری داریم که دیتایی از جنس عدد اعشاری یا صحیح را در آن ذخیره نماییم. (در آموزش آشنایی با روشهای نامگذاری متغیرها در زبان برنامهنویسی جاوا با دیتا تایپهای مختلف به منظور تعریف متغیرها آشنا شدیم.) در واقع، دیتا تایپ int
به منظور تعریف مقداری معادل 2/340/000 تومان قابلاستفاده میباشد که در این آموزش به منظور سادگی در انجام محاسبات، نوع دادۀ عدد صحیح را جهت نگهداری درآمد، هزینهها و سایر مخارج مورد استفاده قرار دادهایم و به منظور جلوگیری از طولانی شدن سورسکد، کلیۀ متغیرها را با یکدیگر ادغام نموده و آنها را به صورت زیر تعریف میکنیم:
int monthlyIncome, loanPayment, currentExpenses;
در واقع، متغیر monthlyIncome
به منظور نگهداری مقدار درآمد ماهیانه، متغیر loanPayment
به منظور ذخیرۀ مقدار اقسام پرداختیِ وام و متغیر currentExpenses
نیز جهت نگهداری مقدار هزینههای جاری تعریف شدهاند.
در ادامه، دستوری دیگر به منظور چاپ استرینگ «:Please enter your monthly income» به کد فوق اضافه میکنیم تا کاربر عدد مربوط به مقدار درآمد ماهیانۀ خود را وارد نماید. بنابراین کد فوق را به صورت زیر تکمیل مینماییم:
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
// The title of the program
System.out.println("My Financial Turnover");
// Object from Scanner Class
Scanner myScanner = new Scanner(System.in);
// Variables
int monthlyIncome, loanPayment, currentExpenses;
// Code to ask for entering your income
System.out.println("Please enter your monthly income:");
myScanner.close();
}
}
همانطور که اشاره کردیم، استرینگ «:Please enter your monthly income» چاپ شده و از کاربر میخواهیم تا مقدار مربوط به درآمد ماهیانۀ خود را وارد کند. حال در ادامه میتوانیم با فراخوانی متد ()nextInt
مقدار دریافتی را خوانده و آن را به یک متغیر منتسب کنیم که برای این منظور دستوری را به صورت زیر به برنامۀ خود اضافه میکنیم:
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
// The title of the program
System.out.println("My Financial Turnover");
// Object from Scanner Class
Scanner myScanner = new Scanner(System.in);
// Variables
int monthlyIncome, loanPayment, currentExpenses;
// Code to ask for entering your income
System.out.println("Please enter your monthly income:");
monthlyIncome = myScanner.nextInt();
myScanner.close();
}
}
در کد فوق، بر اساس آنچه که در آموزش نحوۀ تعریف نوع ورودی کلاس Scanner در زبان برنامهنویسی جاوا آموختیم، متد ()nextInt
متعلق به کلاس Scanner
را روی آبجکت ساختهشده از این کلاس فراخوانی کردهایم تا استرینگ مربوط به درآمد ماهیانۀ کاربر را از ورودی خوانده و دیتای مذکور را به متغیر monthlyIncome
منتسب کند. در حقیقت، در سطر نهم با استفاده از دیتا تایپ int
متغیر monthlyIncome
را تعریف کرده اما مقداری به آن اختصاص ندادهایم که در ادامه با اجرای دستور سطر دوازدهم مقدار دیتای ورودی از سمت کاربر توسط متد ()nextInt
خوانده شده و در این متغیر نگهداری میشود.
همچنین توجه داشته باشیم که متد ()nextInt
را جهت محدود کردن کاربر به وارد کردن دیتایی از نوع عدد صحیح مورد استفاده قرار دادهایم چرا که پیش از این نوع دادۀ int
را برای تعریف متغیر monthlyIncome
به کار گرفتهایم که در صورت استفاده از دیتا تایپ double
برای تعریف متغیر، متد ()nextDouble
به منظور خواندن دیتای ورودی مناسب میبود. به همین ترتیب، به ازای هر یک از متغیرهای loadPayment
و currentExpenses
نیز متد ()nextInt
جهت دریافت به ترتیب مقادیر مربوط به میزان اقساط پرداختی و هزینههای جاری به صورت زیر روی آبجکت ساختهشده فراخوانی میشوند:
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
// The title of the program
System.out.println("My Financial Turnover");
// Object from Scanner Class
Scanner myScanner = new Scanner(System.in);
// Variables
int monthlyIncome, loanPayment, currentExpenses;
// Code to ask for entering your income
System.out.println("Please enter your monthly income:");
monthlyIncome = myScanner.nextInt();
// Code to ask for entering your loan payment
System.out.println("Please enter your loan payment:");
loanPayment = myScanner.nextInt();
// Code to ask for entering your current expense
System.out.println("Please enter your current expenses:");
currentExpenses = myScanner.nextInt();
myScanner.close();
}
}
در این مرحله، کد فوق را اجرا میکنیم به طوری که در خروجی خواهیم داشت:
My Financial Turnover
Please enter your monthly income:
همانطور که میبینیم، برنامۀ ما پس از چاپ استرینگهای فوق منتظر دریافت ورودی میماند و بدین ترتیب کاربر در ابتدا عدد مربوط به میزان درآمد ماهیانهٔ خود را وارد نموده و به محض دریافت مقداری از جنس عدد صحیح، مرحلۀ بعدی اجرا شده و استرینگ مربوط به وارد کردن میزان اقساط پرداختیِ وام چاپ میگردد؛ سپس برنامه مجدداً منتظر دریافت ورودی از کاربر میماند و در نهایت هم استرینگ «:Please enter your current expenses» چاپ شده و از کاربر درخواست میشود تا مقدار هزینههای جاری خود را وارد کند. بنابراین با توجه به آنچه که در بالا بدان اشاره کردیم، در خروجی خواهیم داشت:
My Financial Turnover
Please enter your monthly income:
1000000
Please enter your loan payment:
120000
Please enter your current expenses:
400000
نتیجۀ حاصل از اجرای برنامۀ فوق را مشاهده میکنیم که در آن به ازای درآمد ماهیانه، اقساط پرداختی وام و هزینههای جاری به ترتیب مقادیری فرضی معادل 1000000، 120000 و 400000 تومان را وارد کردهایم. بنابراین تا این مرحله توانستیم با موفقیت اطلاعات مد نظر خود را وارد برنامه نماییم و در ادامه میباید مقادیر مربوط به میزان اقساط ماهیانه و هزینههای جاری را از درآمد ماهیانه کم کنیم تا در نهایت مقدار باقیمانده را به عنوان مقدار درآمد خالص ماهیانه در کنسول در معرض دید کاربر قرار دهیم که برای این منظور برنامۀ خود را به صورت زیر تکمیل مینماییم:
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
// The title of the program
System.out.println("My Financial Turnover");
// Object from Scanner Class
Scanner myScanner = new Scanner(System.in);
// Variables
int monthlyIncome, loanPayment, currentExpenses;
// Code to ask for entering your income
System.out.println("Please enter your monthly income:");
monthlyIncome = myScanner.nextInt();
// Code to ask for entering your loan payment
System.out.println("Please enter your loan payment:");
loanPayment = myScanner.nextInt();
// Code to ask for entering your current expense
System.out.println("Please enter your current expenses:");
currentExpenses = myScanner.nextInt();
// Calculating the remainder
int result = monthlyIncome - (loanPayment + currentExpenses);
System.out.println("The left over money equals to: " + result);
myScanner.close();
}
}
در حقیقت، با استفاده از دیتا تایپ int
متغیری تحت عنوان result
تعریف کرده و در ادامه مقدار حاصل از جمع مقادیر منتسب به هر یک از متغیرهای loanPayment
و currentExpenses
را از مقدار اختصاصیافته به متغیر monthlyIncome
کم کرده و در نهایت نتیجۀ حاصل را به متغیر result
منتسب نمودهایم (با توجه به آنچه در آموزش آشنایی با نحوۀ بهکارگیری اپراتورها در زبان برنامهنویسی جاوا بدان اشاره کردیم، محاسبات ریاضیاتی داخل پرانتز در ابتدا اجرا شده و مقادیر منتسب به دو متغیر مربوطه با یکدیگر جمع میشوند و در ادامه مقدار حاصل از درآمد ماهیانه کسر میشود.) در نهایت، با اجرای سطر آخر استرینگ «:The left over money equals to» با مقدار منتسب به متغیر result
به اصطلاح Concate (الحاق) شده و مقدار نهایی در قالب یک استرینگ در کنسول چاپ میشود به طوری که در خروجی خواهیم داشت:
My Financial Turnover
Please enter your monthly income:
1000000
Please enter your loan payment:
120000
Please enter your current expenses:
400000
The left over money equals to: 480000
به طور خلاصه میتوان گفت که به عنوان درآمد ماهیانه، اقساط پرداختی وام و هزینههای جاری به ترتیب مقادیری فرضی معادل با 1/000/000، 120/000 و 400/000 تومان وارده کردهايم كه جمع مخارج معادل عدد 520/000 تومان از درآمد ماهيانه كسر شده و مقدار خالص 480/000 تومان به عنوان الباقی درآمد ماهیانه در کنسول نمایش داده میشود.
در این آموزش توانستیم یک پروژۀ حسابداری کوچک طراحی کنیم که با کمی ذوق و خلاقیت بیشتر میتوان برنامههای متعددی همچون برنامۀ محاسبۀ تناسب قد و وزن (BMI)، تبدیل سرعت ماشین بر اساس واحد مایل به واحد کیلومتر و بسیاری برنامههای کاربردی دیگر نیز توسعه دهیم.