Java Eğitimi 12- Switch Case Yapısı

Merhabalar,

Döngü durumları bitti. Artık Java’da karar yapısı olarak kullanılan switch case yapısına geçebiliriz. If-else yapısı da karar vermek için kullanılıyordu, ikisi arasındaki fark ne o zaman? Bazen öyle programlarla karşılaşırız ki çok sayıda koşul kontrolü yapmamız gerekir. Ayrıca bunları yaptıktan sonra işlemler de yapılarak bir sonuca varılması gerekir. İşte bu tür durumlarda if else yapısındansa switch case yapısını kullanmayı tercih ederiz. Böylece birçok koşul içinde akış kontrolü sağlanır ve zorluk yaşamayız. Bu yapıda birden çok değişkene göre durumlar yazılabilir. Bu özellikleri de bizi switch case yapısını kullanmaya iter. O zaman bu ifade sınırsız sayıda çalıştırma yoluna sahip bir komuttur diyebiliriz. Kodlar üzerindeki takip ve anlama durumu kolaylaşır.

Switch case yapısı şu şekildedir:

 
switch(değisken) {
case değer1:
değişkenin değeri değer1'e eşit ise yapılacak komutlar;
break;
case değer2:
değişkenin değeri değer2'e eşit ise yapılacak komutlar;
break;
default:
değişkenin değeri hiçbir case’e uymuyorsa yapılması gereken komut;
break;
}

Örnek yaparak pekiştirmeye çalışalım. Mesela mevsimleri yazdıran bir program yazmaya çalışalım. Yapmamız gereken ilk şey mevsimler adında bir değişken belirlemek. Switch’in yanına bu değişkenin adını yazarız ve case’lere başlarız. Artık her case yerine mevsimleri sırayla yazabiliriz. 1. duruma sonbahar, 2. duruma kış, 3. duruma ilkbahar ve 4. duruma yaz değişkenini yazdırırsak kodlarımız aşağıdaki şekilde olacaktır.

public class karar {
public static void main(String[] args){
int mevsimler=1;

switch(mevsimler) {
case 1:
System.out.println("Sonbahar");
case 2:
System.out.println("Kış");
case 3:
System.out.println("İlkbahar");
case 4:
System.out.println("Yaz");
}
}
}

Dikkat edilmesi gereken noktalardan birisi başta int mevsimler=1; komutunu yazmamız. Çünkü case’lerin içine girdiğinde her mevsim adı ayrı bir değer alıyor.

Bu programda sadece yazdırma işlemi kullandığımız için break komutunu kullanmadık. Kısaca bahsedecek olursam, break komutu case’in içine girdikten ve o case’i kontrol ettikten sonra diğer case’lerin içine girmeyi engelliyor. Böylece herhangi bir hata meydana gelmiyor. Peki kullansaydık nasıl olacaktı? Bu durumdan devam ederek programı geliştirmeye çalışalım.

Örneğin önceden seçtiğimiz mevsimi yazdırmak istersek mevsim değişkenine bir sayı atamamız gerekir. Diyelim ki “ilkbahar” yazdırmak istiyoruz. O halde yapmamız gereken şey int mevsim_degeri = 3; yapmak olmalı. Mevsim değerine 3 verdik ama çıktısını string olarak elde edeceğiz. O zaman bunları birbirine nasıl eşleştireceğiz? mevsim_degeriStr = “Sonbahar”;  yazarak bu sorunu da ortadan kaldırmış oluruz. 

int mevsim_degeri = 3; kodunda 3 yerine 1 yazarsak sonbahar, 2 yazarsak kış ve 4 yazarsak yaz mevsimini elde ederiz. Eğer bu 4 değer dışında bir değer yazarsak ekran çıktısında Seçilen Mevsim: null yazısını görürüz. Bu durum da default kısmı için çalışır. Değer verdiğimiz sayı belirlenen aralık arasında değilse default devreye giriyor ve önceden aralık dışı bir sayı girildiğinde neyi belirlediysek onu çalıştırıyor. Default için,

default:
       System.out.println("Geçersiz mevsim!!!");
       break;

 

ifadesini de kullanabilirdik. Peki default komutu ne işe yarar? Case sabitlerinde yer alan koşullardan hiçbiri verilen ifadeye uymuyorsa default kısmına geçilir. Bu kısım olmasa da olur, olmadığında bir sorun yaşamamak için kodları uygun bir şekilde yazmamız gerekir. Default ifadesi her zaman sonda yer almak zorunda değildir ama genellikle sonda kullanılır. Şimdi de birkaç dersten oluşan basit bir ders programı oluşturmaya çalışalım.Örneğin 3 gün belirleyelim: Bunlar pazartesi, çarşamba ve perşembe olsun. Her güne birkaç tane ders koyalım.

 

  • Pazartesi görülen dersler matematik, yöneylem araştırması, üretim yöntemleri
  • Çarşamba görülen dersler ekonomi ve simülasyon
  • Perşembe görülen dersler maliyet analizi ve termodinamik diyelim ve yapıyı oluşturmaya başlayalım.

Giriş kısmı için kullanacağımız kodlar;

Scanner giris = new Scanner(System.in);
int secim;

System.out.println("Ders programını görebilmek için bir gün seçiniz (1-Pazartesi, 2-Çarşamba, 3-Perşembe)");
secim=giris.nextInt();

olur. Switch case yapısında belirlemiş olduğumuz kısıtları yerine koymamız gerekiyor.

switch (secim) {
case 1 :
System.out.println("Matematik, yöneylem araştırması, üretim yöntemleri");
break;
case 2 :
System.out.println("Ekonomi, simülasyon");
break;
case 3 :
System.out.println("Maliyet analizi, termodinamik");
break;
}

Bu şekilde bir konuyu daha bitirmiş olduk. Tekrar görüşmek dileğiyle..

Yorum bırakın