Java’da Akis Kontrol Mekanizmasi (Switch-Case Yapisi)

Java’da Akis Kontrol Mekanizmasi (Switch-Case Yapisi)

Mantik olarak "if else" kosul yapisina benzer. Kendisine gönderilen parametreyi degerlendirir ve ona göre ayrilan kod blogunu çalistirir. Bu yapi bir degiskenin içerigine bakarak, programin akisini bir çok seçenekten birine yönlendirir.

Genel kulanilis biçimi:

switch(degisken)
{
      case kosul1:
              //islemler
      break;       
      case kosul2:
              //islemler
      break;      
       .
       .
       .
      case kosuln:
              //islemler
      break;
      default:
		//hiç bir kosul gerçeklesmezse yapilacak islemler  
      break;
}

“degisken” in ne olduguna göre, case’in birine girer ve takip eden satirlar “break” ifadesini görene kadar isleme konur. Bütün durumlardaki (case) kosullarin aksi söz konusu oldugunda gerçeklestirilmesi istenen islemler default ifadesinden sonraki kisimda bildirilir ve kodun sadece o kismi çalisir (break görene kadar).

Örnek bir java kodu;

import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		System.out.println("Bir sayi giriniz : ");
		int sayi = s.nextInt(); 
		switch (sayi)
		    {
		       case 5:
		    	   System.out.println("5 girdiniz!");
		    	   break;
		       case 10:
		    	   System.out.println("10 girdiniz!");
		    	   break;
		       default:
		    	   System.out.println("5 veya 10 disinda bir sayi girdiniz!");
		    	   break;   
		    }
	}
}
Klavyeden 5 girilirse çikti:
	Bir sayi giriniz :
	5
	5 girdiniz!
	
Klavyeden 10 girilirse çikti:
	Bir sayi giriniz :
	10
	10 girdiniz!
	
Klavyeden 5 ve 10 nun disinda bir sayi girilirse çikti:
	Bir sayi giriniz :
	7
	5 veya 10 disinda bir sayi girdiniz!
	

Simdi bu kodu biraz inceleyelim. Bu kod kullanicidan bir sayi girmesini bekler ve sayi degiskenine, girilen sayi atanir. “switch-case” yapisinda kosullar yukardan baslayarak kontrol edilir. “sayi” degiskenine atanan sayi 5 ise; case 5’in altindaki kodlar break görene kadar çalisir. Atanan sayi 10 ise case 10’nun altindaki kodlar break e kadar çalisir. Eger 5 veya 10 dan baska bir sayi atanmissa default un altindaki kodlar çalisir.

Eger bir case in sonuna break koymazsak, sayiya atanan deger case teki sayiya esit olsun olmasin alttaki case lere ait komutlarda break görene kadar çalisirdi. Anlatmak istedigimi örnek vererek açiklamak gerekirse;

Hiç break kullanmadigimizi farz edersek:

public static void main(String[] args){
		Scanner s=new Scanner(System.in);
		System.out.println("Bir sayi giriniz : ");
		int sayi = s.nextInt(); 
		switch (sayi)
		    {
		       case 5:
		    	   System.out.println("5 girdiniz!");
		       case 10:
		    	   System.out.println("10 girdiniz!"); 
		       default:
		    	   System.out.println("5 veya 10 disinda bir sayi girdiniz!");    
		    }
}


Klavyeden 5 girilirse çikti:

Bir sayi giriniz :

	5
	5 girdiniz!
	10 girdiniz!
	5 veya 10 disinda bir sayi girdiniz!
	
Klavyeden 10 girilirse çikti:
	Bir sayi giriniz :
	10
	10 girdiniz!
	5 veya 10 disinda bir sayi girdiniz!

Switch-case yapisi gördügünüz gibi if-else kontrol mekanizmasina çok benzer. Ancak aralarinda ufak farklar vardir. Switch-case yapisinda direkt olarak degerin bir seylere esit olup olmadigina bakabiliriz, sayi araliginda olup olmadigina bakamayiz. Bir diger fark ise, uygun kosul saglandiktan sonra yapidan çikilma zorunlulugunun olmamasi. switch-case yapisinda, break komutu kullanilmadigi takdirde diger kosullari da çalistirma imkânimiz var; ancak if-else yapisinda herhangi bir sart saglandiginda o kosula ait if çalistirilir ve if else yapisindan çikilir.

switch-case kullanimina bir örnek (Klavyeden girilen sayi ve isleme göre sonuç verir.):

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int sonuc = 0;
		System.out.println("Bir sayi giriniz : ");
		int sayi1 = s.nextInt();
		System.out.println("Bir islem giriniz : ");
		char islem = s.next().charAt(0);
		System.out.println("Bir sayi giriniz : ");
		int sayi2 = s.nextInt();
		switch (islem) {
		case '+':
			sonuc = sayi1 + sayi2;
			System.out.println("sonuc: "+sonuc);
			break;
		case '-':
			sonuc = sayi1 - sayi2;
			System.out.println("sonuc: "+sonuc);
			break;
		case '*':
			sonuc = sayi1 * sayi2;
			System.out.println("sonuc: "+sonuc);
			break;
		case '/':
			sonuc = sayi1 / sayi2;
			System.out.println("sonuc: "+sonuc);
			break;
		default:
			System.out.println("Hatali islem");
		}
	}
}
	Çikti:
	
	Bir sayi giriniz :
	4
	
	Bir islem giriniz :
	-
	
	Bir sayi giriniz :
	5	
	sonuc: -1

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir