العمليات الحسابية وأنواع البيانات
تعرف على العمليات الحسابية وأنواع البيانات في Java.
سنغطي ما يلي...
العودة إلى مشروعنا
حتى الآن، قطعنا شوطًا كبيرًا في تعلم البرمجة اللازمة لبعض متطلبات المشروع. لنلقِ نظرةً أخرى على متطلبات عميلنا.
وفقًا للمتطلبات 4 و6، يجب أن يكون تطبيقنا قادرًا على:
إجراء عمليات حسابية كالجمع والطرح والضرب والقسمة.
احسب الإجابة الفعلية لكل سؤال.
حسنًا، دعونا نبدأ مباشرة!
جمع رقمين
يجب أن يكون هذا سهلاً: إدخال رقمين وخصصهما لـ num1
و num2
، ثم اطبع num1 + num2
. شغّل البرنامج أدناه وتحقق مما إذا كنا نحصل على
import java.util.Scanner; public class MyJavaApp { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //Taking two numbers as input and storing inside two variables respectively System.out.print("First number: "); String num1 = scan.nextLine(); System.out.print("Second number: "); String num2 = scan.nextLine(); System.out.println("The answer to " + num1 + " + " + num2 + " is " + num1 + num2); } }
لكن انتظر لحظة! نحصل على إخراج "٨٢" بدلًا من "١٠". ما رأيك؟
أنواع البيانات وتحويلها
في الكود الخاص بنا:
عند استخدام
scan.nextLine()
، فإنها تأخذ ما نكتبه وتُرجع لنا سلسلة نصية. لذا، تُعامل الأرقام المخزنة فيnum1
وnum2
كنصوص وليست أرقامًا رياضية.
في Java، String
نوع بيانات أساسي يُستخدم لتمثيل النصوص أو تسلسلات الأحرف (سلسلة نصية). تُستخدم لتخزين ومعالجة الكلمات والجمل أو أي معلومات نصية في برنامج. تُحاط السلاسل النصية بعلامتي اقتباس مزدوجتين " "
.
عندما نحاول إضافة
num1
وnum2
باستخدام عامل+
، فإنه السلسلتين بدلًا من جمع الأرقام. لهذا السبب حصلنا على "82" بدلًا من "10".يتسلسل هذا هو إجراء ضم أو ربط السلاسل معًا لإنشاء سلسلة أطول.
لحل هذه المشكلة، نحتاج إلى تحويل هذه السلاسل إلى أرقام (إلى نوع بيانات أساسي آخر يسمى الأعداد الصحيحة )، حتى يفهم الكمبيوتر أننا نريد إجراء عمليات رياضية بها.
العدد الصحيح هو عدد صحيح، سواء كان موجبًا أو سالبًا، دون أي أجزاء عشرية أو كسرية.
إذا كانت هناك طريقة لتحويل سلاسل إدخال إلى أعداد صحيحة أثناء البحث عن إدخال، فربما يمكننا جمع الرقمين بسهولة باستخدام +
. وهناك طريقة واحدة يمكننا استدعاؤها: scan.nextInt()
.
نوع البيانات int
عندما نعلم أن متغير سيخزن أعدادًا صحيحة بدلًا من سلسلة نصية، علينا تعريفه على هذا النحو. يحدث أمران في السطر 8. أولًا، نُخبر Java أن num1
عدد صحيح، ونُهيئه إدخال الواردة من لوحة المفاتيح، ولكن بدلًا من استدعاء nextLine()
، نستدعي scan.nextInt()
. اقرأ الكود بعناية، سطرًا بسطر. ستجده مفهومًا.
import java.util.Scanner; public class MyJavaApp { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //Taking two numbers as input and storing inside two variables respectively System.out.print("First number: "); int num1 = scan.nextInt(); System.out.print("Second number: "); int num2 = scan.nextInt(); int result = num1 + num2; System.out.println("The answer to " + num1 + " + " + num2 + " is " + result); } }
يؤدي تشغيل الكود أعلاه إلى إعطاءنا "10" - وهي النتيجة التي كنا نتوقعها.
من الأفضل دائمًا تحويل إدخال من لوحة المفاتيح إلى int
في حالة الأرقام.
إضافة العمليات الحسابية
بعد أن تناولنا مفاهيم أنواع البيانات الأساسية، مثل int
و String
، وكيفية تحويل كل نوع بيانات إلى نوع آخر، لنعد إلى متطلبات مشروعنا. وهذا يقودنا إلى العوامل الحسابية.
العمليات الحسابية في Java
في Java، المعاملات الحسابية هي رموز خاصة تُجري عمليات على المتغيرات والقيم، تمامًا كما هو الحال عند حل المعادلات الحسابية البسيطة. بالنسبة للأعداد، رأينا كيف يجمع عامل +
عددين. المعاملات الحسابية الأخرى المتاحة في Java هي -
للطرح، *
للضرب، و /
للقسمة.
دعونا نلقي نظرة على مثال لكل مشغل قيد الاستخدام.
public class MyJavaApp {public static void main(String[] args) {int num1 = 7;int num2 = 3;// additionSystem.out.println("7 + 3 is " + (num1 + num2));// subtractionSystem.out.println("7 - 3 is " + (num1 - num2));// multiplicationSystem.out.println("7 * 3 is " + (num1 * num2));// divisionSystem.out.println("7 / 3 is " + (num1 / num2));}}
بعد تشغيل البرنامج السابق، ربما لاحظت أننا لا نحصل على إخراج الأخير قيمة كسرية، مع أن 7 / 3
ليس عددًا صحيحًا. هذا لأنه في Java ، عند قسمة عددين صحيحين باستخدام عامل /
، تكون النتيجة أيضًا عددًا صحيحًا - في هذه الحالة، 2. ولكن في الواقع، الإجابة أقرب إلى 2.333، وهو ليس عددًا صحيحًا.
كما هو الحال مع نوع بيانات int
للأعداد الصحيحة، لدينا أيضًا نوع بيانات أساسي للأعداد ذات القيم العشرية (مثل 2.333) يُعرف باسم double
. لذلك، عندما نعلم أنه سيتم تعيين قيمة لهذا النوع من متغير ، يجب أن نعلن عن double
، وهو ما نفعله متغير المسمى result
في السطر 3 أدناه:
public class MyJavaApp {public static void main(String[] args) {double result = 2.333;System.out.println(result);}}
الآن بعد أن علمنا أن لدينا مشغلين متاحين في Java، يمكننا بسهولة حساب الإجابة الصحيحة لكل سؤال.
في البرنامج أدناه، دعنا نأخذ إجابة المستخدم ثم نطبع إجابته الصحيحة (التي يحسبها برنامجنا).
import java.util.Scanner; public class MyJavaApp { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n1 = 4; int n2 = 9; String question = "What is " + n1 + " + " + n2 + "?"; System.out.println(question); int userAnswer = scan.nextInt(); System.out.println("Your answer is: "+ userAnswer); // Computing the correct answer System.out.println("The correct answer is: " + (n1 + n2)); } }
يمكننا أن نفعل الشيء نفسه لجميع المشغلين، كما هو موضح أدناه:
import java.util.Scanner; public class MyJavaApp { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n1 = 4; int n2 = 9; int userAnswer; String question = "What is " + n1 + " + " + n2 + "? "; System.out.print(question); userAnswer = scan.nextInt(); System.out.println("Your answer is: "+ userAnswer); // Computing the correct answer System.out.println("The correct answer is: " + (n1 + n2)); question = "What is " + n1 + " - " + n2 + "? "; System.out.print(question); userAnswer = scan.nextInt(); System.out.println("Your answer is: "+ userAnswer); // Computing the correct answer System.out.println("The correct answer is: " + (n1 - n2)); question = "What is " + n1 + " * " + n2 + "? "; System.out.print(question); userAnswer = scan.nextInt(); System.out.println("Your answer is: "+ userAnswer); // Computing the correct answer System.out.println("The correct answer is: " + (n1 * n2)); question = "What is " + n1 + " / " + n2 + "? "; System.out.print(question); userAnswer = scan.nextInt(); System.out.println("Your answer is: "+ userAnswer); // Computing the correct answer System.out.println("The correct answer is: " + (n1 / n2)); } }
هذا كل شيء! لقد تعلمنا دمج المتطلبين الرابع والسادس.
مراجعة الدرس
باختصار، تعلمنا بعض الأساليب وأنواع البيانات في Java التي مكّنتنا من حساب المجاميع الصحيحة. قد تظن أن Java تحتوي على أساليب مدمجة لكل حالة. لكن هذا ليس صحيح، وهو أمر جيد أيضًا.