Monen tunnisteen tapaukset
Ryhmittele useita tunnisteita
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
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
- Nuolityylinen switch
- switch lausekkeena
- yield-avainsana
- Monen tunnisteen tapaukset