CodeGym /جاوا بلاگ /Random-SD /جاوا سوئچ بيان
John Squirrels
سطح
San Francisco

جاوا سوئچ بيان

گروپ ۾ شايع ٿيل

جاوا سوئچ بابت ٿورو نظريو

تصور ڪريو ته توھان ھڪڙو نائيٽ آھيو جيڪو رستي جي ھڪڙي ڪنڊ تي روڪيو ويو آھي. جيڪڏهن توهان کاٻي پاسي وڃو، توهان پنهنجي گهوڙي کي وڃائي ڇڏيو. جيڪڏهن توهان صحيح هلندا ته توهان کي علم حاصل ٿيندو. اسان هن صورتحال کي ڪوڊ ۾ ڪيئن نمائندگي ڪنداسين؟ توھان شايد اڳ ۾ ئي ڄاڻو ٿا ته اسان استعمال ڪندا آھيون تعميرات جھڙوڪ if-then ۽ if-then-else اھي فيصلا ڪرڻ لاءِ.
if (turn_left) {
    System.out.println("You will lose your horse");
}
if (turn_right) {
    System.out.println("You will gain knowledge");
}
else
    System.out.println("So you're just going to stand there?");
پر ڇا ٿيندو جيڪڏهن روڊ ٻن حصن ۾ نه، پر ڏهن ۾ ورهائجي؟ توھان وٽ رستا آھن جيڪي ”مڪمل طور ساڄي طرف“، ”ٿوري ساڄي کان کاٻي“، ”ٿورو ٿورو وڌيڪ کاٻي طرف“ وغيره، ڪل 10 ممڪن رستا؟ تصور ڪريو ته توهان جو "جيڪڏهن-تو-ٻيو " ڪوڊ هن نسخي ۾ وڌندو!
if (option1)
{}
else if (option2)
{}else if (optionN) ...
فرض ڪريو ته توهان وٽ روڊ ۾ 10-واٽ ڪانٽو آهي (اهو هتي اهم آهي ته اختيارن جو تعداد محدود آهي). اهڙين حالتن لاء، جاوا کي سوئچ بيان آهي.
switch (ExpressionForMakingAChoice) {
           case (Value1):
               Code1;
               break;
           case (Value2):
               Code2;
               break;
...
           case (ValueN):
               CodeN;
               break;
           default:
               CodeForDefaultChoice;
               break;
       }
هي بيان ڪيئن ڪم ڪندو آهي:
  • ExpressionForMakingAChoice جو جائزو ورتو ويو آهي. پوءِ سوئچ بيان ايندڙ قدر جي مقابلي ۾ ايندڙ ValueX سان (جنهن جي ترتيب ۾ اهي درج ٿيل آهن).
  • جيڪڏهن ExpressionForMakingAChoice ValueX سان ملندو آهي، پوءِ ڪولن جي پٺيان ڏنل ڪوڊ تي عمل ڪيو ويندو.
  • جيڪڏهن هڪ وقفي بيان سان منهن ڪيو ويو آهي، پوء ڪنٽرول بيان کان ٻاهر منتقل ڪيو ويندو آهي.
  • جيڪڏهن ExpressionForMakingAChoice ڪنهن به ValueX سان نه ٿو ملي، ته پوءِ ڪنٽرول پاس ڪري ٿو CodeForDefaultCase ڏانهن.
اهم نقطا
  • سوئچ بيان ۾، ExpressionForMakingAChoice جو قسم ھيٺين مان ھڪڙو ھجڻ گھرجي:

    • بائيٽ ، مختصر ، چار ، انٽ .
    • بائيٽ ، مختصر ، ڪردار ، انٽيجر (پرائمري ڊيٽا ٽائپس جا لفافي).
    • تار .
    • اينم .
  • ڊفالٽ بلاڪ اختياري آهي . جيڪڏهن اهو غير حاضر آهي ۽ ExpressionForMakingAChoice ڪنهن به ValueX سان نه ٿو ملي، ته پوءِ ڪا به ڪارروائي نه ڪئي ويندي.
  • وقفي بيان جي ضرورت ناهي. جيڪڏهن اهو غير حاضر آهي، ڪوڊ جاري رهندو (ڪيس جي بيانن ۾ وڌيڪ موازن کي نظر انداز ڪندي) وقف جي پهرين واقعن تائين يا سوئچ بيان جي آخر تائين .
  • جيڪڏهن ساڳئي ڪوڊ کي ڪيترن ئي اختيارن لاءِ عمل ڪرڻ جي ضرورت آهي، اسان ڪيترن ئي مسلسل ڪيسن جي بيانن جي وضاحت ڪندي نقل ختم ڪري سگهون ٿا.

اچو ته هاڻي هڪ نظر رکون ته ڪيئن سوئچ بيان جاوا ۾ استعمال ٿيندو آهي

توهان پريشان نه ڪريو: اسان نظريي سان ڪيو آهي. توھان ھيٺ ڏنل مثالن کي ڏسڻ کان پوء، سڀ ڪجھ وڌيڪ واضح ٿي ويندو. خير، اچو ته شروع ڪريون. اچو ته فلڪيات مان هڪ مثال ڏسون جنهن ۾ اسان جي نظام شمسي جا سيارا شامل آهن. جديد بين الاقوامي روين جي مطابق، اسان پلاٽو کي خارج ڪيو آهي (ان جي مدار جي خاصيتن جي ڪري). اسان کي ياد آهي ته اسان جا سيارا سج کان سندن فاصلي جي حساب سان ترتيب ڏنل آهن: عطارد، وينس، ڌرتي، مريخ، مشتري، زحل، يورينس ۽ نيپچون. اچو ته هڪ جاوا طريقو لکون جيڪو هڪ سيارو جو آرڊينل نمبر (سج کان ان جي فاصلي جي نسبت سان) وٺي ۽ ڌرتيءَ جي ماحول جي مکيه حصن کي هڪ List<String> طور واپس ڪري . توهان کي ياد هوندو ته ڪجهه سيٽن جو ماحول هڪ جهڙو هوندو آهي. اهڙيءَ طرح، وينس ۽ مريخ تي اڪثر ڪري ڪاربان ڊاءِ آڪسائيڊ شامل آهن. مشتري ۽ زحل جو ماحول هائڊروجن ۽ هيليم تي مشتمل آهي. ۽ يورينس ۽ نيپچون ميٿين کي گيس جي آخري جوڙي ۾ شامل ڪن ٿا. هتي اسان جي فنڪشن آهي:
public static List<String> getPlanetAtmosphere(int seqNumberFromSun) {
    List<String> result = new ArrayList<>();
    switch (seqNumberFromSun) {
        case 1: result.add("No atmosphere");
            break;
        case 2:
        case 4: result.add("Carbon dioxide");
            break;
        case 3: result.add("Carbon dioxide");
            result.add("Nitrogen");
            result.add ("Oxygen");
            break;
        case 5:
        case 6: result.add("Hydrogen");
            result.add("Helium");
            break;
        case 7:
        case 8: result.add("Methane");
            result.add("Hydrogen");
            result.add("Helium");
            break;
        default:
            break;
    }
    return result;
}
نوٽ ڪريو ته اسان ساڳيو ڪوڊ استعمال ڪري رهيا آهيون سيٽن لاءِ هڪجهڙائي واري ماحوليات سان. اسان مسلسل ڪيس بيانن کي استعمال ڪندي ڪيو . جيڪڏهن اسان چاهيون ٿا ته اسان جي گهر واري ڌرتيءَ جي ماحول جي ٺهڪندڙ، اسان پنهنجي طريقي کي 3 سان سڏيون ٿا دليل:
getPlanetAtmosphere(3).
System.out.println(getPlanetAtmosphere(3)) returns ["Carbon dioxide", "Nitrogen", "Oxygen"].
وقف سان تجربو: ڇا ٿيندو جيڪڏهن اسان سڀني برڪ بيانن کي هٽايو؟ اچو ته اها ڪوشش ڪريون:
public static List<String> getPlanetAtmosphere(int seqNumberFromSun) {
    List<String> result = new ArrayList<>();
    switch (seqNumberFromSun) {
        case 1: result.add("No atmosphere");
        case 2:
        case 4: result.add("Carbon dioxide");
        case 3: result.add("Carbon dioxide");
            result.add("Nitrogen");
            result.add ("Oxygen");
        case 5:
        case 6: result.add("Hydrogen");
            result.add("Helium");
        case 7:
        case 8: result.add("Methane");
            result.add("Hydrogen");
            result.add("Helium");
        default:
    }
    return result;
}
جيڪڏهن اسان System.out.println(getPlanetAtmosphere(3)) جو نتيجو پرنٽ ڪريون ٿا ، ته پوءِ اسان کي معلوم ٿئي ٿو ته اسان جي ڌرتي ايتري رهڻ لائق ناهي. يا اهو آهي؟ پاڻ لاءِ فيصلو ڪريو: ["ڪاربن ڊاءِ آڪسائيڊ"، "نائيٽروجن"، "آڪسيجن"، "هائيڊروجن"، "هيليم"، "ميٿين"، "هائڊروجن"، "هيليم"] . ائين ڇو ٿيو؟ پروگرام سوئچ بلاڪ جي آخر تائين پهرين ميچ کان پوء سڀني ڪيسن جي بيانن تي عمل ڪري ٿو .

وقفي بيانن جي اضافي اصلاح

ياد رکو ته اسان بريڪ بيانن ۽ ڪيسن کي مختلف طريقي سان ترتيب ڏيندي طريقي کي بهتر ڪري سگھون ٿا .
public static List<String> getPlanetAtmosphere(int seqNumberFromSun) {
    List<String> result = new ArrayList<>();
    switch (seqNumberFromSun) {
        case 1: result.add("No atmosphere");
                break;
        case 3: result.add("Nitrogen");
                result.add ("Oxygen");
        case 2:
        case 4: result.add("Carbon dioxide");
                break;
        case 7:
        case 8: result.add("Methane");
        case 5:
        case 6: result.add("Hydrogen");
                result.add("Helium");
    }
     return result;
}
لڳي ٿو گهٽ ڪوڊ، صحيح؟ اسان بيانن جو ڪل تعداد گھٽايو آھي ڪيس جي بيانن جي ترتيب سان راند ڪندي ۽ انھن کي ٻيهر منظم ڪرڻ سان. ھاڻي ھر قسم جي گيس کي لسٽ ۾ شامل ڪيو ويو آھي صرف ڪوڊ جي ھڪڙي لائن ۾. آخري مثال ۾ ڏنل ڪوڊ صرف اهو ڏيکارڻ آهي ته شيون ڪيئن ڪم ڪن ٿيون. اسان هن طريقي سان ڪوڊ لکڻ جي سفارش نٿا ڪريون. جيڪڏهن اهڙي جاوا ڪوڊ جو ليکڪ (ٻين پروگرامرن کي اڪيلو ڇڏي ڏيو) ان کي برقرار رکڻ گهرجي، هن کي انهن ڪيس بلاڪ جي ٺهڻ جي منطق ۽ سوئچ بيان ۾ جاري ڪيل ڪوڊ جي ٺهڻ جي منطق کي ٻيهر ترتيب ڏيڻ ڏاڍو ڏکيو ٿيندو .

جيڪڏھن کان فرق

if ۽ switch بيانن جي ٻاهرئين هڪجهڙائي کي نظر ۾ رکندي ، اهو نه وساريو ته سوئچ بيان هڪ مخصوص VALUE جي بنياد تي ڪيسن مان هڪ کي چونڊيندو آهي، جڏهن ته if بيان ۾ ڪو به بوليان اظهار ٿي سگهي ٿو. اهو ذهن ۾ رکو جڏهن توهان جو ڪوڊ ٺاهيو.

نتيجو

  • ڪيس بيان استعمال ڪريو ٻن کان وڌيڪ شاخن لاءِ ته جيئن توھان جي ڪوڊ کي بي ترتيبي نه ڏيو if بيانن سان.
  • برانچ جي منطقي بلاڪ کي مڪمل ڪرڻ نه وساريو هر مخصوص قيمت (ڪيس بيان) لاءِ وقفي بيان داخل ڪندي.
  • سوئچ بيان جو اظهار هڪ Enum يا String ٿي سگهي ٿو ، انهي سان گڏ ڪجهه ابتدائي قسمون.
  • ڊفالٽ بلاڪ کي ياد رکو . غير متوقع قدرن کي سنڀالڻ لاءِ ان کي استعمال ڪريو.
  • ڪارڪردگي کي بهتر ڪرڻ لاء، سوئچ بلاڪ جي شروعات ۾ سڀ کان وڌيڪ عام قدرن سان لاڳاپيل ڪوڊ شاخن کي منتقل ڪريو .
  • ڪيس جي بيانن جي آخر ۾ وقفي بيانن کي حذف ڪندي پنهنجي ”اصلاح“ ۾ نه وڃايو- اهڙي ڪوڊ کي سمجهڻ ڏکيو آهي، ۽ نتيجي طور، برقرار رکڻ ڏکيو آهي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION