Jump to content

Timp rămas până la zilele B-Zone

V-am pregătit o mulțime de evenimente. Click aici

La mulți ani B-ZONE!

V-am pregătit o mulțime de evenimente. Click aici

[JAVA]Instructiunea switch


TLG Andrei26
 Share

Recommended Posts

Instructiunea switch

 

 

 

 

  • Instructiunea switch transfera controlul uneia dintre mai multe instructiuni depinzand de valoarea unei expresii.
  • Sintaxa generala:
switch (<Expresie>){
	default: <Instructiune0>
	case <ExpresieConstanta1> : <Instructiune1>
	case <ExpresieConstanta2> : <Instructiune2>
  	...
 	case <ExpresieConstantaN> : <InstructiuneN>
  }
  • Ordinea in care apar clauzele case nu are importanta, iar clauza default poate fi scrisa oriunde. Tipul lui <expresie> trebuie sa fie char, byte, short sau int, in caz contrar, apare o eroare la compilare.
  • Corpul instructiunii SWITCH trebuie sa fie un bloc. Orice instructiune continuta de bloc  poate fi etichetata de una sau mai multe etichete case si default. Aceste etichete se spune ca sunt asociate instructiunii SWITCH ca valori ale expresiilor constante din etichetele case.
  • In cadrul unei instructiuni switch, trebuiesc satisfacute urmatoarele cerinte pentru a nu avea erori la compilare:

 

  1. Fiecare valoare a lui <ExpresieConstanta1>, <ExpresieConstanta2>, ... , <ExpresieConstantaN> trebuie sa fie asignabila cu tipul lui <Expresie>
  2. Nu trebuie sa existe 2 expresii constante cu ACEEASI valoare
  3. Cel mult o eticheta default poate fi asociata cu aceeasi instructiune switch

 

  • Cand este executata o instructiune switch, mai intai se evalueaza <Expresie>. Daca evaluarea lui <Expresie> se termina anormal, atunci toata instructiunea se termina anormal. Altfel, executia continua prin compararea valorii lui <Expresie> cu fiecare expresie case. Atunci:

 

  1. Daca una dintre constantele case (adica <ExpresieConstantaK>, unde K=1,2,...,N) este egala cu valoarea lui <Expresie>, atunci se executa toate instructiunile dupa eticheta case pana la intalnirea primului break. Daca toate aceste instructiuni se executa normal, atunci intreaga instructiune switch se termina normal
  2. Daca nu exista nici o eticheta care sa se potriveasca cu valoarea lui <Expresie> si exista o eticheta default, atunci se executa toate instructiunile dupa eticheta default pana la intalnirea primului break
  3. Daca nu exista nici o eticheta case care sa se potriveasca cu valoarea lui <Expresie> si nu exista o eticheta default, atunci nu se executa NIMIC si instructiunea switch se termina normal

 

Exemplu de program cu instructiunea switch:

 

public class Switch{
	static void f(int k){
    	switch (k) {
        	default:
            		System.out.println("Audi");
                	break;
		case 1:
            		System.out.println("BMW");
                	break;
		case 2:
		case 3:
            		System.out.println("Mercedes");
                	break;
		case 4:
		case 5:
            		System.out.println("Ford");
        }
    }
    
    public static void main(String[] args){
    	f(1);
        f(2);
        f(3);
        f(4);
        f(6);
    }
}

 

  • La executie, acesta va afisa:

 

BMW

Mercedes

Mercedes

Ford

Audi

 

  • Se observa posibilitatea utilizarii mai multor expresii case asociate aceluiasi bloc de instructiuni. Este ESENTIALA si terminarea unui bloc cu ajutorul instructiunii BREAK.
  • Daca, de exemplu, nu ar fi existat primul break asociat cazului default, atunci rezultatul ar fi fost:

 

BMW

Mercedes

Mercedes

Ford

Audi

BMW

 

  • Cam atat pentru instructiunea switch, sper ca v-am facut sa intelegeti.

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.