Java Academy · Oppitunti

Monen tunnisteen tapaukset

Ryhmittele useita tunnisteita

Oppitunti 4/413 vaihetta

Monen tunnisteen tapaukset on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.

Tunnisteiden ryhmittely

Usein useiden arvojen pitäisi käynnistää sama toiminto. Modernissa switch-rakenteessa voi luetella useita tunnisteita yhdessä casessa pilkuilla eroteltuina, jolloin ne käyttävät samaa haaraa.

Pilkuilla erotellut tunnisteet

Kirjoittakaa arvot ->-merkin eteen peräkkäin pilkuilla eroteltuina. Jos jokin niistä täsmää, haara suoritetaan.

public class Main {
    public static void main(String[] args) {
        int day = 7;
        switch (day) {
            case 1, 2, 3, 4, 5 -> System.out.println("Weekday");
            case 6, 7 -> System.out.println("Weekend");
        }
    }
}

Vokaalien tunnistaminen

Tyypillinen käyttötapaus on kaikkien vokaalien ryhmittely yhteen haaraan sen sijaan, että kirjoitettaisiin viisi erillistä casea.

public class Main {
    public static void main(String[] args) {
        char c = 'o';
        switch (c) {
            case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
            default -> System.out.println("Consonant");
        }
    }
}

Usean tunnisteen caset lausekkeissa

Usean tunnisteen caset toimivat myös switch-lausekkeissa, jolloin jokainen luetelluista tunnisteista palauttaa saman arvon.

public class Main {
    public static void main(String[] args) {
        int month = 7;
        String season = switch (month) {
            case 12, 1, 2 -> "Winter";
            case 3, 4, 5 -> "Spring";
            case 6, 7, 8 -> "Summer";
            default -> "Autumn";
        };
        System.out.println(season);
    }
}

Merkkijonotunnisteiden ryhmittely

Myös String-arvoja voi ryhmitellä. Tässä useat komennon kirjoitusasut yhdistetään yhteen toimintoon.

public class Main {
    public static void main(String[] args) {
        String cmd = "quit";
        switch (cmd) {
            case "quit", "exit", "q" -> System.out.println("Closing");
            case "help", "h" -> System.out.println("Showing help");
            default -> System.out.println("Unknown command");
        }
    }
}

Enum-tunnisteiden ryhmittely

Myös enum-vakiot voivat käyttää samaa haaraa, mikä pitää luokkien käsittelylogiikan tiiviinä.

public class Main {
    enum Day { MON, TUE, WED, THU, FRI, SAT, SUN }
    public static void main(String[] args) {
        Day d = Day.SAT;
        String kind = switch (d) {
            case SAT, SUN -> "Rest";
            default -> "Work";
        };
        System.out.println(kind);
    }
}

Ei päällekkäisiä tunnisteita

Kukin tunniste saa esiintyä koko switch-rakenteessa vain kerran. Saman arvon luetteleminen kahdessa haarassa aiheuttaa käännösvirheen, koska kääntäjä ei voisi päättää, kumpi haara suoritetaan.

public class Main {
    public static void main(String[] args) {
        int n = 2;
        switch (n) {
            case 1, 2 -> System.out.println("Low");
            case 3, 4 -> System.out.println("High");
            default -> System.out.println("Other");
        }
    }
}

Vertailu vanhaan fall-through-menetelmään

Vanhassa kaksoispistetyylissä ryhmittely vaati peräkkäisiä tyhjiä fall-through-caseja yhden yhteisen rungon yläpuolelle. Pilkkusyntaksi on paljon selkeämpi ja estää tahattoman fall-through-ilmiön.

public class Main {
    public static void main(String[] args) {
        int code = 3;
        switch (code) {
            case 1, 3, 5, 7, 9 -> System.out.println("Odd");
            case 0, 2, 4, 6, 8 -> System.out.println("Even");
        }
    }
}

Ryhmittely lohkojen avulla

Ryhmitelty case voi käyttää myös lohkorunkoa. Mikä tahansa täsmäävistä tunnisteista suorittaa koko lohkon.

public class Main {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A', 'B' -> {
                System.out.println("Pass");
                System.out.println("Well done");
            }
            default -> System.out.println("Try again");
        }
    }
}

Yhdistäminen yield-komentoon

Ryhmitellyt tunnisteet ja yield toimivat yhdessä, kun yhteinen haara tarvitsee laskentaa.

public class Main {
    public static void main(String[] args) {
        int n = 4;
        int points = switch (n) {
            case 1, 2, 3 -> 10;
            case 4, 5, 6 -> {
                int bonus = n * 2;
                yield 20 + bonus;
            }
            default -> 0;
        };
        System.out.println(points);
    }
}

Luettavuuden parantaminen

Usean tunnisteen caset tiivistävät pitkät toistuvien haarojen luettelot muutamaksi selkeäksi ryhmäksi, jolloin tarkoitus käy heti ilmi.

public class Main {
    public static void main(String[] args) {
        int http = 204;
        String group = switch (http / 100) {
            case 1, 2, 3 -> "OK-ish";
            case 4, 5 -> "Error";
            default -> "Unknown";
        };
        System.out.println(group);
    }
}

Pikatarkistus

Miten saatte useat arvot suorittamaan saman switch-haaran modernissa Javassa?

Kertaus

Opitte käyttämään usean tunnisteen caseja:

  • Luetelkaa arvot pilkuilla eroteltuina ennen merkkiä ->
  • Toimii int-, char-, String- ja enum-arvoilla
  • Tahattomaa fall-through-ilmiötä ei synny, toisin kuin vanhassa tyylissä
  • Kukin tunniste saa esiintyä vain kerran
  • Yhdistäkää tarvittaessa lohkoihin ja yield-komentoon
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
104
Oppitunnit
374

Usein kysytyt kysymykset

Onko oppitunti ”Monen tunnisteen tapaukset” ilmainen?

Kyllä – oppitunnin ”Monen tunnisteen tapaukset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Monen tunnisteen tapaukset”?

Ryhmittele useita tunnisteita Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Monen tunnisteen tapaukset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?

Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Nuolityylinen switch
  2. switch lausekkeena
  3. yield-avainsana
  4. Monen tunnisteen tapaukset
← Takaisin: Java Academy