Bir programda çok sayıda koşul kontrolü ve bunların sonucuna göre gerçekleştirilmesi gereken işlemler varsa, if-else yapıları ile akışın izlenmesi zorlaşabilir. Böyle durumlar genellikle switch deyiminin kullanılmasının gerekli olacağı durumlardır. switch deyimi, tek bir ifadenin değerine göre sınırsız sayıda çalıştırma yolu belirlemeyi sağlayan bir komuttur.
- switch sözcüğünden hemen sonra gelen ifade parantez içinde yer almalı.
- case anahtar sözcüklerini izleyen ifadeler değişken içermemelidir.
switch deyiminin çalışma prensibi basittir. switch ifadesi hangi case’i izleyen sabitle çakışıyorsa, programın kontrolü o case’i izleyen kısma geçer. Bu case’den sonraki deyimler de kontrol edilmeden çalıştırılır.
case sabitlerinden hiçbiri ifade ile uyuşmuyorsa, programın akışı default‘u izleyen kısıma geçer. (Bu kısım mevcutsa) default‘un en sonda olması şart değildir. Fakat en sona koymak iyi bir programlama stilidir.
İki case sabiti aynı değeri alamaz.
Switch/case yapısında, programın kontrolünün ifadenin değerine göre case seçeneklerinden sadece birini çalıştırıp bundan sonra switch/case yapısını terketmesini isiyorsak bu durumda her case seçeneğinden sonra break komutu yerleştirmeliyiz.
~~~UYGULAMA~~~
Girilen 2 sayıyı toplama, çıkarma, çarpma, bölme işlemleri… sayi1 ve sayi 2 ve operatör(+, -, *, / ) değerleri kullanıcı tarafından girilecektir… Burada dikkat edilmesi gereken String türünden bir op değişkeni tanımladık ve kodumuzda caseden sonra “+”, “-“, “*”, “/” şeklinde yazdık, değişkenimiz int, float, double tipinde olursa çift tırnak kullanılmaz sade şekilde yazılır, değişkenimiz char tipinde olursa tek tırnak içinde yazılır…
~~~KOD~~~
import java.util.Scanner;
public class temelIslemler {
public static void main(String[] args) {
int sayi1, sayi2;
String op;
Scanner sc = new Scanner(System.in);
System.out.println(“Sayilari giriniz: “);
sayi1 = sc.nextInt();
sayi2 = sc.nextInt();
System.out.println(“Hangi işlemi yapmak istiyorsunuz: “);
op = sc.next();
switch(op) {
case “+”:
System.out.println(“Sonuc: “ + (sayi1 + sayi2));
break;
case “-“:
System.out.println(“Sonuc: “ + (sayi1 – sayi2));
break;
case “*”:
System.out.println(“Sonuc: “ + (sayi1 * sayi2));
break;
case “/”:
System.out.println(“Sonuc: “ + ((double)(sayi1) / sayi2));
break;
default:
System.out.println(“Yanlış operatör”);
}
}
}