CodeGym /Java Blog /சீரற்ற /ஜாவா சுவிட்ச் அறிக்கை
John Squirrels
நிலை 41
San Francisco

ஜாவா சுவிட்ச் அறிக்கை

சீரற்ற குழுவில் வெளியிடப்பட்டது

ஜாவா சுவிட்ச் பற்றிய ஒரு பிட் கோட்பாடு

நீங்கள் சாலையில் ஒரு முட்கரண்டியில் நிறுத்தப்பட்ட ஒரு மாவீரர் என்று கற்பனை செய்து பாருங்கள். நீங்கள் இடதுபுறம் சென்றால், உங்கள் குதிரையை இழக்க நேரிடும். நீங்கள் சரியாகச் சென்றால், நீங்கள் அறிவைப் பெறுவீர்கள். குறியீட்டில் இந்த சூழ்நிலையை எவ்வாறு பிரதிநிதித்துவப்படுத்துவோம்? இந்த முடிவுகளை எடுப்பதற்கு, if-then மற்றும் if-then-இல் போன்ற கட்டுமானங்களைப் பயன்படுத்துகிறோம் என்பதை நீங்கள் ஏற்கனவே அறிந்திருக்கலாம் .

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 உடன் பொருந்தாமலும் இருந்தால், எந்த நடவடிக்கையும் செயல்படுத்தப்படாது.
  • இடைவேளை அறிக்கை தேவையில்லை. அது இல்லாவிட்டால், குறியீடு இடைவேளையின் முதல் நிகழ்வு வரை அல்லது சுவிட்ச் ஸ்டேட்மெண்ட் முடியும் வரை (கேஸ் ஸ்டேட்மென்ட்களில் கூடுதல் ஒப்பீடுகளைப் புறக்கணித்து) தொடர்ந்து செயல்படுத்தப்படும் .
  • ஒரே குறியீட்டை பல தேர்வுகளுக்குச் செயல்படுத்த வேண்டும் என்றால், பல தொடர்ச்சியான வழக்கு அறிக்கைகளைக் குறிப்பிடுவதன் மூலம் நகல்களை அகற்றலாம் .

ஜாவாவில் சுவிட்ச் ஸ்டேட்மென்ட் எவ்வாறு பயன்படுத்தப்படுகிறது என்பதை இப்போது பார்க்கலாம்

நீங்கள் கவலைப்பட வேண்டாம்: நாங்கள் கோட்பாட்டை முடித்துவிட்டோம். பின்வரும் எடுத்துக்காட்டுகளைப் பார்த்த பிறகு, எல்லாம் மிகவும் தெளிவாகிவிடும். சரி, ஆரம்பிக்கலாம். நமது சூரிய மண்டலத்தின் கிரகங்கள் சம்பந்தப்பட்ட வானியல் ஒரு உதாரணத்தைப் பார்ப்போம். சமீபத்திய சர்வதேச அணுகுமுறைகளுக்கு இணங்க, நாங்கள் புளூட்டோவை (அதன் சுற்றுப்பாதையின் பண்புகள் காரணமாக) விலக்கியுள்ளோம். புதன், வீனஸ், பூமி, செவ்வாய், வியாழன், சனி, யுரேனஸ் மற்றும் நெப்டியூன்: நமது கிரகங்கள் சூரியனிலிருந்து அவற்றின் தூரத்தால் அமைக்கப்பட்டிருப்பதை நாம் நினைவுகூருகிறோம். ஒரு கோளின் வரிசை எண்ணை (சூரியனிலிருந்து அதன் தூரத்துடன் தொடர்புடையது) எடுத்து, கிரகத்தின் வளிமண்டலத்தின் முக்கிய கூறுகளை ஒரு பட்டியலாக வழங்கும் ஜாவா முறையை எழுதுவோம் <ஸ்ட்ரிங்>. சில கிரகங்கள் ஒரே மாதிரியான வளிமண்டல அமைப்பைக் கொண்டிருப்பதை நீங்கள் நினைவில் கொள்வீர்கள். எனவே, வீனஸ் மற்றும் செவ்வாய் முக்கியமாக கார்பன் டை ஆக்சைடைக் கொண்டுள்ளது; வியாழன் மற்றும் சனியின் வளிமண்டலம் ஹைட்ரஜன் மற்றும் ஹீலியம் கொண்டது; மற்றும் யுரேனஸ் மற்றும் நெப்டியூன் ஆகியவை கடைசி ஜோடி வாயுக்களில் மீத்தேன் சேர்க்கின்றன. இங்கே எங்கள் செயல்பாடு:

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 மற்றும் ஸ்விட்ச் அறிக்கைகளின் வெளிப்புற ஒற்றுமைகளைக் கருத்தில் கொண்டு , சுவிட்ச் அறிக்கை ஒரு குறிப்பிட்ட மதிப்பின் அடிப்படையில் வழக்குகளில் ஒன்றைத் தேர்ந்தெடுக்கிறது என்பதை மறந்துவிடாதீர்கள் , ஆனால் if அறிக்கை எந்த பூலியன் வெளிப்பாட்டையும் கொண்டிருக்கக்கூடும். உங்கள் குறியீட்டை வடிவமைக்கும்போது இதை மனதில் கொள்ளுங்கள்.

முடிவுரை

  • if அறிக்கைகளுடன் உங்கள் குறியீட்டை ஒழுங்கீனம் செய்யாமல் இருக்க இரண்டு கிளைகளுக்கு மேல் வழக்கு அறிக்கையைப் பயன்படுத்தவும் .
  • இடைவெளி அறிக்கையைச் செருகுவதன் மூலம், ஒவ்வொரு குறிப்பிட்ட மதிப்புக்கும் (கேஸ் ஸ்டேட்மெண்ட்) கிளையின் லாஜிக்கல் பிளாக்கை முடிக்க மறக்காதீர்கள் .
  • சுவிட்ச் ஸ்டேட்மெண்ட்டின் வெளிப்பாடு ஒரு Enum அல்லது String ஆகவும் , சில பழமையான வகைகளாகவும் இருக்கலாம்.
  • இயல்புநிலை தொகுதியை நினைவில் கொள்க . எதிர்பாராத மதிப்புகளைக் கையாள அதைப் பயன்படுத்தவும்.
  • செயல்திறனை மேம்படுத்த, மிகவும் பொதுவான மதிப்புகளுடன் தொடர்புடைய குறியீடு கிளைகளை சுவிட்ச் பிளாக்கின் தொடக்கத்திற்கு நகர்த்தவும் .
  • வழக்கு அறிக்கைகளின் முடிவில் உள்ள இடைவெளி அறிக்கைகளை நீக்குவதன் மூலம் உங்கள் "உகப்பாக்கம்" செய்ய வேண்டாம் - அத்தகைய குறியீடு புரிந்துகொள்வது கடினம், அதன் விளைவாக, பராமரிப்பது கடினம்.
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION