إذا أردت مقارنة ثلاث قيم وإظهار الأصغر بينها في Java، فيمكنك حل المسألة بعبارات if أو باستخدام الدالة Math.min. يشرح هذا الدرس الطريقتين خطوة بخطوة، مع قراءة الأعداد من المستخدم، والتعامل مع القيم السالبة والمتساوية، واختبار البرنامج. الكلمة المفتاحية المستهدفة هنا هي إيجاد أصغر ثلاثة أعداد في Java.
فهم المسألة قبل كتابة الكود
لدينا ثلاثة أعداد: a وb وc. نحتاج إلى طباعة القيمة التي لا توجد بينها قيمة أصغر منها. من المهم أن نفكر في حالات التساوي أيضًا: إذا كانت القيم 4 و4 و9 فالأصغر هو 4، حتى لو ظهر مرتين. كما ينبغي ألا نفترض أن كل الأعداد موجبة؛ فقد تكون المدخلات سالبة أو صفرًا.
قراءة ثلاثة أعداد باستخدام Scanner
تتيح فئة Scanner قراءة القيم من لوحة المفاتيح. يبدأ البرنامج بإنشاء كائن Scanner ثم يقرأ ثلاثة أعداد صحيحة باستخدام nextInt. إذا كانت المسألة تتطلب أعدادًا عشرية، يمكن استبدال نوع int بـ double واستخدام nextDouble.
الطريقة الأولى: المقارنة باستخدام if
نقارن العدد الأول بالعددين الآخرين. إذا كان أقل من أو يساوي كليهما، فهو الأصغر. وإلا نتحقق من العدد الثاني، وإذا لم يتحقق الشرطان يكون العدد الثالث هو الأصغر. استخدام <= يضمن صحة النتيجة عند تساوي قيمتين.
import java.util.Scanner;
public class SmallestOfThree {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter three integers: ");
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int smallest;
if (a <= b && a <= c) {
smallest = a;
} else if (b <= a && b <= c) {
smallest = b;
} else {
smallest = c;
}
System.out.println("Smallest number: " + smallest);
input.close();
}
}احفظ الملف باسم SmallestOfThree.java لأن اسم الملف يطابق اسم الفئة العامة. عند إدخال 8 3 5 تكون النتيجة 3، وعند إدخال -2 7 -2 تكون النتيجة -2. الشروط مرتبة بحيث لا نحتاج إلى ترتيب الأعداد كلها؛ نبحث عن الحد الأدنى فقط.
الطريقة الثانية: استخدام Math.min
توفر Java الدالة Math.min(x, y) لإرجاع الأصغر بين قيمتين. يمكن تطبيقها مرتين: أولًا لإيجاد الأصغر بين a وb، ثم مقارنة النتيجة مع c. هذه الطريقة قصيرة ومباشرة، بينما توضح طريقة if منطق المقارنة بصورة أفضل للمبتدئ:
int smallest = Math.min(a, Math.min(b, c));
System.out.println("Smallest number: " + smallest);تعمل الصيغة نفسها مع الأعداد العشرية عند تعريف القيم على أنها double. اختر نوع البيانات حسب طبيعة المدخلات؛ استخدام int مناسب للأعداد الصحيحة، لكنه لا يخزن الكسور.
كيف تعمل المقارنة خطوة بخطوة؟
في التعبير a <= b && a <= c يجب تحقق المقارنتين معًا حتى نختار a. العامل && يعني «و»، أي إن الشرط كله صحيح فقط عندما يكون a أصغر من أو مساويًا لكل من b وc. بعد ذلك نكرر الفكرة مع b. وإذا لم يكن a ولا b هو الأصغر، فإن c هو القيمة الأقل أو المساوية للبقية.
يمكن أيضًا كتابة حل مختصر باستخدام متغير يبدأ بقيمة a، ثم تحديثه إذا كان b أو c أصغر. يسهّل ذلك توسيع الفكرة عند مقارنة قائمة أطول، لكنه يحتاج إلى شرح إضافي حول تحديث المتغير، لذلك تعد صيغة if أعلاه أوضح لمسألة ثلاثة أعداد.
اختبارات تساعد على اكتشاف الأخطاء
اختبر ثلاث قيم مختلفة مثل 9 و2 و6، ثم اختبر أن يكون العدد الأصغر في كل موضع: الأول مثل 1 و5 و7، والثاني مثل 8 و3 و6، والثالث مثل 8 و5 و2. أضف حالات التساوي مثل 4 و4 و9، وحالة تساوي الأعداد الثلاثة، ثم أدخل أعدادًا سالبة وصفرًا. إذا كان برنامجك يستقبل قيمة غير عددية عبر Scanner فسيرمي استثناءً؛ في التطبيقات الفعلية أضف التحقق من صحة المدخلات باستخدام hasNextInt.
أخطاء شائعة في هذا البرنامج
- استخدام
&بدل&&في شرط منطقي مركب. - نسيان الأقواس حول كل مقارنة، مما يصعّب قراءة الشرط ويزيد احتمال الخطأ.
- استخدام
<فقط ثم إساءة التعامل مع الأعداد المتساوية؛ لذلك استخدمنا<=. - اختيار اسم ملف لا يطابق اسم الفئة العامة، فيفشل تشغيله في بيئات Java المعتادة.
- إغلاق Scanner قبل الانتهاء من قراءة المدخلات.
الخلاصة ومتابعة تعلم Java
يمكن إيجاد أصغر ثلاثة أعداد في Java بمقارنات if واضحة أو باستدعاء Math.min مرتين. احرص على اختبار التساوي والسالب، واختيار نوع البيانات الصحيح. لمزيد من تطبيقات البرمجة، راجع قسم دروس Java، وتعلم تنظيم الخوارزميات عبر شرح Selection Sort في Java، أو اقرأ عن تنفيذ Stack باستخدام Linked List.





