استخدام الـ enum للتحكم بجملة switch

تعلمنا سابقاً كيفية تعريف متغيرات من الـ enum بداخل الدالة main

في هذا الدرس سنشاهد مثال عملي على تعريف متغير من الـ enum وإستخدامه للتحكم بجملة switch.

لنفرض أن لدينا برنامج يقوم بالتحقق من أربع احتمالات لأنواع الفاكهة، ومن ثم طباعة جملة تصف فيها نوع الفاكهة (لكل فاكهة وصف مختلف) :

1- في حال كانت الفاكهة برتقال يقوم بطباعة "orange tastes acid".

2- في حال كانت الفاكهة تفاح يقوم بطباعة "apple tastes sweet".

3- في حال كانت الفاكهة ليمون يقوم بطباعة "lemon tastes acid".

4- في حال كانت الفاكهة موز يقوم بطباعة "banana tastes sweet".

 

أولاً نقوم بتعريف المتغير كما تعلمنا سابقاً:

	public static void main(String[] args) {
		
		Fruits ap = Fruits.APPLE;
}

 

هنا قمنا بتعريف متغير نوعه Fruits قيمته APPLE.

ثم نقوم بكتابة جملة switch والتي تتضمن أربع إحتمالات cases

 

switch(ap) {
		
		case ORANGE:
			System.out.println("orange tastes acid");
			break;
		case APPLE:
			System.out.println("apple tastes sweet");
			break;
		case LEMON:
			System.out.println("lemon tastes acid");
			break;
		case BANANA:
			System.out.println("banana tastes sweet");
			break;
		
		
		}

 

في جملة switch وضعنا ap كـ expression للتحقق من قيمته، وبداخل الـ switch وضعنا الاحتمالات الأربعة للفواكه.

لاحظ أن الثوابت بداخل الـ switch تم كتابتها مباشرة كالتالي: LEMON و BANANA ، ولم يتم كتابتها كالتالي Fruits.LEMON أو Fruits.BANANA. والسبب في ذلك أن نوع الثوابت تم تعريفه ضمنياً عند وضع الـ ap بداخل قوسين الـ switch.

لاحظ أيضاً أن كافة الاحتمالات cases يجب أن تكون من نفس نوع الـ enum وهي Fruits. وإلا سينتج عن ذلك خطأ compilation error.

 

الآن سيكون برنامجنا النهائي بالشكل التالي:

public static void main(String[] args) {
		
		Fruits ap = Fruits.APPLE;
		
		switch(ap) {
		
		case ORANGE:
			System.out.println("orange tastes acid");
			break;
		case APPLE:
			System.out.println("apple tastes sweet");
			break;
		case LEMON:
			System.out.println("lemon tastes acid");
			break;
		case BANANA:
			System.out.println("banana tastes sweet");
			break;
		
		
		}
	
	}

 

وعند تشغيله ستكون نتيجة الـ output :

apple tastes sweet

بإمكانك تجربة إحتمالات أخرى لنوع الفاكهة لترى مميزات الـ enum في التحكم بالجمل الشرطية، أو أن تدع المجال للمستخدم بإدخال نوع الفاكهة عند تعريف المتغير بإستخدام Scanner كالتالي:

import java.util.Scanner;

public class Test {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		Fruits ap = Fruits.valueOf(input.next());
		
		switch(ap) {
		
		case ORANGE:
			System.out.println("orange tastes acid");
			break;
		case APPLE:
			System.out.println("apple tastes sweet");
			break;
		case LEMON:
			System.out.println("lemon tastes acid");
			break;
		case BANANA:
			System.out.println("banana tastes sweet");
			break;
		
		
		}
	
	}

 

لاحظ أن المستخدم يجب عليه إدخال قيمة الفاكهة بما يطابق الثوابت (بالأحرف الكبيرة) في حال أدخلها باحرف صغيرة لن يتم التعرف على الثابت وسينتج خطأ

لمعالجة هذا الخطأ بإمكانك تحويل مدخلات المستخدم تلقائياً للاحرف الكبيرة بإستخدام الدالة toUpperCase() ويتم وضعها بعد دالة السكانر next() بهذا يكون كود أخذ القيمة من المستخدم بالشكل التالي:

 

		Fruits ap = Fruits.valueOf(input.next().toUpperCase());

 

 

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !