CodeGym /Blog Jawa /Acak /Pranyatan ngalih Jawa
John Squirrels
tingkat
San Francisco

Pranyatan ngalih Jawa

Diterbitake ing grup

Sedikit teori tentang Java Switch

Bayangna sampeyan ksatria mandheg ing pertigaan dalan. Yen sampeyan ngiwa, sampeyan bakal kelangan jaran. Yen sampeyan mlaku kanthi bener, sampeyan bakal entuk kawruh. Kepiye carane kita makili kahanan iki ing kode? Sampeyan mbokmenawa wis ngerti yen kita nggunakake konstruksi kaya yen-banjur lan yen-banjur-liyane kanggo nggawe keputusan kasebut.

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?");

Nanging kepiye yen dalane ora dadi loro, nanging dadi sepuluh? Sampeyan duwe dalan sing "rampung ing sisih tengen", "rada ing sisih kiwa", "sethithik luwih ngiwa" lan liya-liyane, kanthi total 10 dalan? Bayangake carane kode "yen-then-else " sampeyan bakal tuwuh ing versi iki!

if (option1)
{…}
else if (option2)
{…}
…
else if (optionN) ...
Upaminipun sampeyan duwe 10-cara garpu ing dalan (iku penting kene sing nomer opsi winates). Kanggo kahanan kaya mengkono, Jawa nduweni statement switch .

       switch (ExpressionForMakingAChoice) {
           case (Value1):
               Code1;
               break;
           case (Value2):
               Code2;
               break;
...
           case (ValueN):
               CodeN;
               break;
           default:
               CodeForDefaultChoice;
               break;
       }

Iki minangka pratelan kasebut:
  • ExpressionForMakingAChoice dievaluasi. Banjur statement ngalih mbandhingaké nilai asil karo ValueX sabanjuré (ing urutan kang padha kadhaptar).
  • Yen ExpressionForMakingAChoice cocog karo ValueX, banjur kode ing ngisor titik loro dieksekusi.
  • Yen statement break ditemoni, banjur kontrol ditransfer njaba statement switch.
  • Yen ExpressionForMakingAChoice ora cocog karo ValueX, banjur kontrol liwat menyang CodeForDefaultCase.
Titik penting
  • Ing statement switch, jinis ExpressionForMakingAChoice kudu salah siji saka ing ngisor iki:

    • byte , singkat , char , int .
    • Byte , Short , Character , Integer (wrappers saka jinis data primitif).
    • String .
    • Enum .
  • Blok gawan iku opsional. Yen ora ana lan ExpressionForMakingAChoice ora cocog karo ValueX, mula ora ana tumindak sing bakal ditindakake.
  • Pernyataan istirahat ora dibutuhake. Yen ora ana, kode kasebut bakal terus dieksekusi (ora nggatekake perbandingan luwih lanjut ing pernyataan kasus) nganti kedadeyan break pisanan utawa nganti pungkasan statement switch .
  • Yen kode sing padha kudu dieksekusi kanggo sawetara pilihan, kita bisa ngilangi duplikasi kanthi nemtokake sawetara statement cilik sing terus-terusan .

Ayo saiki ndeleng carane statement switch digunakake ing Jawa

Aja kuwatir: kita wis rampung karo teori. Sawise sampeyan ndeleng conto ing ngisor iki, kabeh bakal dadi luwih jelas. Inggih, ayo miwiti. Ayo goleki conto astronomi sing nglibatake planet ing tata surya kita. Sesuai karo sikap internasional paling anyar, kita wis ngilangi Pluto (amarga sifat orbite). Kita ngelingi yen planet kita disusun miturut jarak saka Srengéngé kaya ing ngisor iki: Mercury, Venus, Bumi, Mars, Jupiter, Saturnus, Uranus lan Neptunus. Ayo nulis metode Jawa sing njupuk nomer ordinal planet (relatif karo jarak saka Srengenge) lan ngasilake komponen utama atmosfer planet minangka List <String>. Sampeyan bakal kelingan manawa sawetara planet duwe komposisi atmosfer sing padha. Mangkono, Venus lan Mars ngemot utamané karbon dioksida; atmosfer Jupiter lan Saturnus kasusun saka hidrogen lan helium; lan Uranus lan Neptunus nambah metana menyang pasangan gas pungkasan. Punika fungsi kita:

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;
}
Elinga yen kita nggunakake kode sing padha kanggo planet kanthi komposisi atmosfer sing padha. Kita nindakake iki kanthi nggunakake statement kasus consecutive . Yen kita pengin njaluk komposisi atmosfer planet asal kita, kita nelpon cara kita karo 3 minangka argumen:

getPlanetAtmosphere(3).
System.out.println(getPlanetAtmosphere(3)) returns ["Carbon dioxide", "Nitrogen", "Oxygen"].
Eksperimen karo break: Apa sing kedadeyan yen kita mbusak kabeh statement break ? Ayo dicoba:

    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;
    }
Yen kita nyithak asil System.out.println(getPlanetAtmosphere(3)) , banjur kita nemokake yen planet asal kita ora bisa diuripake. Utawa iku? Hakim dhewe: ["Karbon dioksida", "Nitrogen", "Oksigen", "Hidrogen", "Helium", "Metana", "Hidrogen", "Helium"] . Yagene iki kedadeyan? Program nglakokake kabeh statement kasus sawise pertandhingan pisanan nganti pungkasan blok switch .

Optimization gedhe banget saka statement break

Elinga yen kita bisa nambah cara kanthi ngatur statement break lan kasus beda.

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;
}
Kayane kurang kode, ta? Kita wis nyuda jumlah statement kanthi muter-muter karo urutan statement kasus lan nglumpukake maneh. Saiki saben jinis gas ditambahake menyang dhaptar mung siji baris kode. Kode sing diwenehake ing conto pungkasan mung kanggo nuduhake cara kerjane. Kita ora nyaranake nulis kode kanthi cara iki. Yen penulis kode Jawa kasebut (apa maneh programer liyane) kudu njaga, dheweke bakal nemokake angel banget kanggo mbangun maneh logika ing mburi pambentukan blok kasebut lan kode sing dieksekusi ing statement switch .

Bedane saka yen

Diwenehi persamaan metu saka statement if lan switch , aja lali yen statement switch milih salah siji kasus adhedhasar NILAI KHUSUS, dene pernyataan yen bisa duwe ekspresi boolean. Elinga iki nalika ngrancang kode sampeyan.

Kesimpulan

  • Gunakake statement cilik kanggo luwih saka rong cabang supaya ora clutter kode karo yen statements.
  • Aja lali kanggo ngrampungake blok logis saka cabang kanggo saben nilai tartamtu (pernyataan kasus) kanthi nglebokake statement break .
  • Ekspresi statement switch bisa dadi Enum utawa String , uga sawetara jinis primitif.
  • Elinga blok standar . Gunakake kanggo nangani nilai sing ora dikarepke.
  • Kanggo ngoptimalake kinerja, mindhah cabang kode sing cocog karo nilai sing paling umum ing wiwitan blok switch .
  • Aja kesusu ing "optimasi" kanthi mbusak statement break ing mburi statement kasus - kode kasebut angel dimangerteni, lan, minangka asil, angel dijaga.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION