logo

Perjungti pareiškimus Java

The „Switch“ sakinys „Java“. yra daugiakryptis šakinis teiginys. Paprastais žodžiais tariant, „Java“ jungiklio sakinys vykdo vieną sakinį iš kelių sąlygų.

Tai kaip an jei-kita-jei kopėčių pareiškimas. Tai yra paprastas būdas nukreipti vykdymą į skirtingas kodo dalis pagal išraiškos vertę. Išraiška gali būti a baitas , trumpas , char , arba tarpt primityvus duomenų tipas. Jis tikrina kintamųjų lygybę su keliomis reikšmėmis.



Pastaba: „Java“ jungiklio išraiška turi būti baitų, trumpų, int, ilgų (su „Wrapper“ tipu), enums ir eilutės. Pradedant nuo JDK7, jis taip pat veikia su išvardytais tipais ( Enums Java), Styga klasė ir Vyniojamasis popierius klases.

Sintaksė

switch(expression) {  case value1 :  // Statements  break; // break is optional    case value2 :  // Statements  break; // break is optional  ....  ....  ....  default :   // default Statement }>

Pavyzdys:

Dydžių spausdintuvo pavyzdys

Java
public class SizePrinter {  public static void main(String[] args) {  int sizeNumber = 2; // Replace with your desired size (1, 2, 3, 4, or 5)  switch (sizeNumber) {  case 1:  System.out.println('Extra Small');  break;  case 2:  System.out.println('Small');  break;  case 3:  System.out.println('Medium');  break;  case 4:  System.out.println('Large');  break;  case 5:  System.out.println('Extra Large');  break;  default:  System.out.println('Invalid size number');  }  } }>

Išvestis:



Small>

Kai kurios svarbios „Java Switch“ pareiškimų taisyklės

  1. Gali būti bet koks skaičius atvejų, kai tik nustatoma sąlyga, tačiau atminkite, kad pasikartojančios atvejo (-ių) reikšmės neleidžiamos.
  2. Atvejo reikšmė turi būti tokio paties tipo kaip ir jungiklio kintamasis.
  3. Atvejo reikšmė turi būti pastovi arba pažodinė. Kintamieji neleidžiami.
  4. Pertraukos sakinys naudojamas jungiklio viduje, kad užbaigtų sakinių seką.
  5. Pertraukos teiginys yra neprivalomas. Jei praleista, vykdymas bus tęsiamas kitu atveju.
  6. Numatytasis teiginys yra neprivalomas ir gali būti rodomas bet kurioje jungiklio bloko vietoje. Tuo atveju, jei jo nėra pabaigoje, po numatytosios teiginio reikia palikti pertraukos sakinį, kad nebūtų vykdomas kitas atvejo sakinys.
  Note: Until Java-6, switch case argument cannot be of String type but Java 7 onward we can use String type argument in Switch Case.>

Perjungimo atvejo pareiškimo schema

Šioje struktūrinėje diagramoje parodytas valdymo srautas ir jungiklio teiginių veikimas:

„Switch-statement-flowchart-in-Java“.

Pastaba: „Java switch“ teiginys yra kritimo sakinys, tai reiškia, kad jis vykdo visus sakinius, jei pertraukos raktinis žodis nenaudojamas, todėl labai svarbu kiekvienu atveju naudoti break raktinį žodį.



Pavyzdys: Radimo diena

Apsvarstykite šią „Java“ programą, kuri deklaruoja int pavadintą dieną, kurios reikšmė reiškia dieną (1–7). Kode rodomas dienos pavadinimas, pagrįstas dienos verte, naudojant perjungimo teiginį.

Java
// Java program to Demonstrate Switch Case // with Primitive(int) Data Type // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  int day = 5;  String dayString;  // Switch statement with int data type  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  // Case  case 4:  dayString = 'Thursday';  break;  // Case  case 5:  dayString = 'Friday';  break;  // Case  case 6:  dayString = 'Saturday';  break;  // Case  case 7:  dayString = 'Sunday';  break;  // Default case  default:  dayString = 'Invalid day';  }  System.out.println(dayString);  } }>

Išvestis
Friday>

pertrauka jungiklio korpuse Teiginiai

A pertraukos pareiškimas yra neprivaloma. Jei praleisime pertrauką, vykdymas bus tęsiamas kitoje byloje.

Kartais pageidautina turėti kelis atvejus be pertrauka pareiškimai tarp jų. Pavyzdžiui, panagrinėkime atnaujintą aukščiau pateiktos programos versiją, kuri taip pat rodo, ar diena yra savaitės ar savaitgalio diena.

Pavyzdys:

Perjungti teiginių programą be kelių pertraukų

Java
// Java Program to Demonstrate Switch Case // with Multiple Cases Without Break Statements // Class public class GFG {  // main driver method  public static void main(String[] args)  {  int day = 2;  String dayType;  String dayString;  // Switch case  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  case 4:  dayString = 'Thursday';  break;  case 5:  dayString = 'Friday';  break;  case 6:  dayString = 'Saturday';  break;  case 7:  dayString = 'Sunday';  break;  default:  dayString = 'Invalid day';  }  switch (day) {  // Multiple cases without break statements  case 1:  case 2:  case 3:  case 4:  case 5:  dayType = 'Weekday';  break;  case 6:  case 7:  dayType = 'Weekend';  break;  default:  dayType = 'Invalid daytype';  }  System.out.println(dayString + ' is a ' + dayType);  } }>

Išvestis
Tuesday is a Weekday>

„Java Neted Switch“ pareiškimai

Galime naudoti a jungiklis kaip teiginių sekos dalis iš an išorinis jungiklis. Tai vadinama a įdėtas jungiklis . Kadangi jungiklio teiginys apibrėžia jo bloką, nekyla jokių konfliktų tarp vidiniame jungiklyje ir išoriniame jungiklyje esančių didžiųjų raidžių konstantų.

Pavyzdys:

Įdėto jungiklio pareiškimas

Java
// Java Program to Demonstrate // Nested Switch Case Statement // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  // Custom input string  String Branch = 'CSE';  int year = 2;  // Switch case  switch (year) {  // Case  case 1:  System.out.println(  'elective courses : Advance english, Algebra');  // Break statement to hault execution here  // itself if case is matched  break;  // Case  case 2:  // Switch inside a switch  // Nested Switch  switch (Branch) {  // Nested case  case 'CSE':  case 'CCE':  System.out.println(  'elective courses : Machine Learning, Big Data');  break;  // Case  case 'ECE':  System.out.println(  'elective courses : Antenna Engineering');  break;  // default case  // It will execute if above cases does not  // execute  default:  // Print statement  System.out.println(  'Elective courses : Optimization');  }  }  } }>

Išvestis
elective courses : Machine Learning, Big Data>

„Java Enum“ perjungimo pareiškime

Sąrašai (enums) yra galingas ir aiškus būdas reiškia fiksuotą įvardytų konstantų rinkinį Java kalboje.

Enumai naudojami Switch teiginiuose dėl jų tipo saugumo ir skaitomumo.

Pavyzdys:

„Enum“ naudojimas „Switch“.

Java
// Java Program to Illustrate Use of Enum // in Switch Statement // Class public class GFG {  // Enum  public enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }  // Main driver method  public static void main(String args[])  {  // Enum  Day[] DayNow = Day.values();  // Iterating using for each loop  for (Day Now : DayNow) {  // Switch case  switch (Now) {  // Case 1  case Sun:  System.out.println('Sunday');  // break statement that hault further  // execution once case is satisfied  break;  // Case 2  case Mon:  System.out.println('Monday');  break;  // Case 3  case Tue:  System.out.println('Tuesday');  break;  // Case 4  case Wed:  System.out.println('Wednesday');  break;  // Case 5  case Thu:  System.out.println('Thursday');  break;  // Case 6  case Fri:  System.out.println('Friday');  break;  // Case 7  case Sat:  System.out.println('Saturday');  }  }  } }>

Išvestis
Sunday Monday Tuesday Wednesday Thursday Friday Saturday>

numatytasis sakinys Java Switch Case

numatytasis didžiosios ir mažosios raidės dydis Switch case nurodo, kokį kodą paleisti, jei nesutampa nė viena raidė.

Pageidautina numatytąjį atvejį rašyti visų galimų atvejų pabaigoje, tačiau jį galima parašyti bet kurioje komutatoriaus sakinių vietoje.

Pavyzdys:

Numatytosios reikšmės rašymas perjungimo teiginių viduryje:

Java
/*package whatever //do not write package name here */ import java.io.*; class GFG {  public static void main (String[] args) {  int i=2;  switch(i){  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);    }  } }>

Išvestis
2 3>

Pavyzdys:

Numatytasis rašymas pradedant jungiklio teiginius

Java
import java.io.*; class GFG {  public static void main(String[] args)  {  int i = 5;  switch (i) {  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);  }  } }>

Išvestis
Default 1>

Korpuso etikečių variantai

Case label ir switch argumentai gali būti pastovi išraiška. Perjungimo argumentas gali būti kintamoji išraiška.

kaip rūšiuoti masyvą java

Pavyzdys:

Naudojant kintamo jungiklio argumentą.

Java
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  switch (x + 1) {  case 1:  System.out.println(1);  break;  case 1 + 1:  System.out.println(2);  break;  case 2 + 1:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>

Išvestis
3>

Atvejo etiketė negali būti kintamoji arba kintamoji išraiška. Tai turi būti nuolatinė išraiška.

Java
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  int y = 1;  switch (x) {  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  break;  case x + y:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>
./GFG.java:16: error: constant expression required  case x+y:  ^ 1 error>

„Java Wrapper“ „Switch“ pareiškimuose

„Java“ suteikia keturis vyniojimo klasės naudoti: Integer, Short, Byte ir Long jungiklio sakiniuose.

Pavyzdys:

Java Wrapper jungiklio dėkle.

Java
public class WrapperSwitchExample {  public static void main(String[] args) {  Integer age = 25;  switch (age.intValue()) { // Extract primitive value for switch  case 25:  System.out.println('You are 25.');  break;  case 30:  System.out.println('You are 30.');  break;  default:  System.out.println('Age not matched.');  }  } }>

Išvestis:

You are 25.>

Pastaba:

Neatsižvelgiant į jo vietą, numatytasis atvejis vykdomas tik tuo atveju, jei neįvykdoma jokia kita atvejo sąlyga. Taigi, įtraukus jį į pradžią, vidurį ar pabaigą, pagrindinė logika nekeičiama (nebent naudojate rečiau įprastą techniką, vadinamą kritimo perėjimu).

Pavyzdys: Šiame kode savaitės dieną identifikuosime per skaičius (1-7).

Java
import java.util.Scanner; public class Main {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print('Enter a day number (1-7): ');  int day = scanner.nextInt();  switch (day) {  default:  System.out.println('Not a valid weekday.');  break;  case 1:  System.out.println('It's Monday!');  break;  case 2:  System.out.println('It's Tuesday!');  break;  case 3:  System.out.println('It's Wednesday!');  break;  case 4:  System.out.println('It's Thursday!');  break;  case 5:  System.out.println('It's Friday!');  break;  case 6:  System.out.println('It's Saturday!');  break;  case 7:  System.out.println('It's Sunday!');  break;  }  } }>

Išvestis

Enter a day number (1-7): 8 Not a valid weekday.>


Skaityti daugiau:

  • „Enum“ ir „Switch Keyword“ naudojimas „Java“.
  • „Java“ eilutė „Switch Case“.
  • Java pamoka

Pratimas

Norėdami praktikuoti Java komutatoriaus teiginius, galite apsilankyti puslapyje: „Java Switch“ atvejo pareiškimo praktika

Išvada

„Java“ perjungimo teiginiai yra valdymo srauto struktūros, leidžiančios vykdyti tam tikrą kodo bloką pagal vienos išraiškos reikšmę. Jie gali būti laikomi alternatyva if-else-if teiginiams programuojant.

„Java Switch“ pareiškimai – DUK

Kaip naudoti „Switch“ teiginius „Java“.

Norėdami naudoti perjungimo sakinį Java, galite naudoti šią sintaksę:

jungiklis (išraiška) {
1 atvejo reikšmė:
// kodas, kurį reikia vykdyti, jei išraiška lygi value1
pertrauka;
2 atvejo reikšmė:
// kodas, kurį reikia vykdyti, jei išraiška lygi value2
pertrauka;
// … daugiau atvejų
numatytas:
// kodas, kurį reikia vykdyti, jei nė vienas iš aukščiau nurodytų atvejų nesutampa
}

Ar galime jungikliui perduoti nulį

Ne, negalite perduoti NULL jungiklio sakiniui, nes jiems reikia nuolatinės išraiškos.

Ar galite grįžti prie perjungimo teiginio

Ne, perjungimo teiginiai sukuria valdymo srautą programoje, todėl išėjus iš perjungimo atvejo jis negali grįžti atgal.