# Java'da "switch-case" Yapıları
Merhaba ArkadaÅlar,
Bu yazımızda sizlerle Java programlama dilinde yaygın olarak kullandıÄımız koÅul ifadelerinden biri olan Switch Case yapısından bahsedeceÄiz.
Switch Case; tanımlanmıŠolan yalnızca bir deÄiÅkenin, alacaÄı deÄerlere baÄlı olarak, farklı sonuçlar döndürmesini saÄlayan bir yapıdır. Switch kısmında kullanılacak olan deÄiÅkenler byte, short, int, char veya String veri tipine sahip olmalıdır.
Switch case akıŠdiyagramı Åu Åekildedir:
En basit haliyle switch-case yapısının söz dizimi aÅaÄıdaki gibidir:
```java
public class SwitchCase {
public static void main (String args []) {
int value;
switch (value) {
case 1:
// Value 1
break;
case 2:
// Value 1
break;
case 3:
// Value 1
break;
default:
// Value is invalid
break;
}}}
```
Yukarıdaki switch-case yapısında hangi kod bloÄunun çalıÅtırılacaÄını value deÄiÅkeni belirler. Value deÄeri 1 ise case 1, 2 ise case 2, 3 ise case 3 kod bloÄu çalıÅtırılır. EÄer value deÄiÅkeninin deÄeri hiçbir case deÄeriyle eÅleÅmiyorsa default alanı çalıÅtırılır. Her bir case durumunda, switch yapısından çıkmak ve switch'i izleyen bir sonraki ifadeye geçmek için 'break' komutu kullanılır. Break komutunun kullanılmadıÄı case'lerde ise ilgili case bloÄu iÅletildikten sonra break komutunun bulunduÄu satıra kadar olan tüm kod satırları çalıÅtırılır. Switch-case yapısının çalıÅma mantıÄı genel olarak bu Åekildedir. Ãrnekler ile bu yapıyı daha fazla detaylandıracaÄız.
Switch Case ifadeleri, çalıÅma mantıÄı açısından baktıÄımızda If - Else-if ifadeleri ile benzerlik göstermektedir. Ancak çok fazla koÅul gerektiren durumlarda If - Else-if ifadelerinin yerine Switch ifadelerini tercih edebiliriz. Bu sayede uzun kod satırlarının aksine daha sade ve düzenli bir görünüm elde edebilir ve kodumuzun okunabilirliÄini artırmıŠoluruz.
Not: "switch-case" yapısında eÄer her case'in sonuna "break" ifadesi koymazsak aramıŠolduÄu koÅulu bulana kadar tüm case'lere girip o kod bloklarını çalıÅtıracaktır.
AÅaÄıdaki örnekte switch-case yapısının Integer anahtar deÄeri ile kullanımı gösterilmiÅtir;
AÅaÄıdaki örnekte switch-case yapısının Char anahtar deÄeri ile kullanımı gösterilmiÅtir;
AÅaÄıdaki örnekte switch-case yapısının String anahtar deÄeri ile kullanımı gösterilmiÅtir;
Programlama yaparken birden fazla koÅula sahip durumlarla karÅılaÅabiliriz. ÃrneÄin: eÄer 1'e basarsanız "vize iÅlemleri", eÄer 2'ye basarsanız "kredi kartı iÅlemleri", 3'e basarsanız "ev kredisi iÅlemleri", eÄer 4'e basarsanız "müÅteri temsilcisine baÄlanmak", sıfıra basarsanız "diÄer iÅlemler menüsüne gitmek" gibi çoklu koÅullara göre programlama yapmak gerekebilir. Bunu çözmek için "if-else if" yapılarını ya da "switch-case" yapısını kullanırız.
````java
Scanner scanner = new Scanner(System.in);
int operationChoice = scanner.nextInt();
System.out.println("0-DiÄer iÅlemler");
System.out.println("1-Vize iÅlemler");
System.out.println("2-Kredi kartı iÅlemler");
System.out.println("3-Ev kredisi iÅlemler");
System.out.println("4-MüÅteri temsilcisi iÅlemler");
System.out.println("Your choice is : " + operationChoice);
switch (operationChoice) {
case 0:
System.out.println("DiÄer iÅlemler menüsü");
break;
case 1:
System.out.println("Vize iÅlemleri");
break;
case 2:
System.out.println("Kredi kartı iÅlemleri");
break;
case 3:
System.out.println("Ev kredisi iÅlemleri");
break;
case 4:
System.out.println("MüÅteri temsilcisi iÅlemleri");
break;
default:
System.out.println("Lütfen geçerli bir iÅlem tipi seçiniz");
}
````
karar mekanizmalarıyla ilgili birkaç örneÄe daha bakalım.
```java
import java.util.Random;
class FirstJavaApp
{
public static void main(String[] args)
{
Random random = new Random();
int number = random.nextInt(11);
System.out.println("Rastgele bir sayı tuttum: " + number);
if (number < 5)
{
System.out.println("Sayı 5'ten küçük.");
}
}
}
```
Burada kısaca anlatmak gerekirse, bilgisayardan 0 ile 10 arasında rastgele bir sayı seçmesini istiyoruz, daha sonra bu sayıyı konsola yazdırıyoruz. Buna ek olarak, eÄer sayı 5âten küçükse konsolda bunu belirtiyoruz. Programı arka arkaya birkaç kez çalıÅtırırsanız Åuna benzer sonuçlar alırsınız:
```java
Rastgele bir sayı tuttum: 6
```
```java
Rastgele bir sayı tuttum: 3
Sayı 5'ten küçük.
```
GörüldüÄü gibi ilk çalıÅtırmamızda çıkan sonuçla ikincisindeki farklıdır. Buna **if bloÄu** sebep olmaktadır. Javaâda belli bir koÅula baÄlı olarak bir Åey yapmak istediÄimizde if bloÄunu kullanırız. Yukarıdaki örnekte, "Sayı **5**' ten küçük." yazısını yalnızca sayı gerçekten 5âten küçükse yazdırıyoruz. EÄer sayı **5** veya **5**âten büyükse kodumuz if bloÄuna girmez.
Belli bir koÅula baÄlı olarak iÅ yapmamızı saÄlayan bu tarz ifadelere, **seçim ifadeleri** (**selection statements**) denir. Seçim ifadelerini daha sonra ayrıntılı olarak inceleyeceÄiz.
Åimdi baÅka bir karar mekanizmasına göz atalım. Kodumuzu aÅaÄıdaki gibi deÄiÅtirelim:
```java
class FirstJavaApp
{
public static void main(String[] args)
{
System.out.println("1'den 10'a kadar sayıyorum...");
for (int i = 1; i <= 10; i++)
{
System.out.println(i);
}
System.out.println("Saydım.");
}
}
```
Bu programı çalıÅtırdıÄınızda aÅaÄıdaki çıktıyı alırsınız:
```java
1'den 10'a kadar sayıyorum...
1
2
3
4
5
6
7
8
9
10
Saydım.
```
Bu örneÄimizde bilgisayardan bir iÅlemi defalarca yapmasını istedik. 1âden 10âa kadar olan sayıları konsola yazdırdık. Bu Åekilde, belli bir kod bloÄunu birden fazla kez çalıÅtırmamızı saÄlayan ifadelere **döngü ifadeleri** (**iteration statements**) denir. Biz buradaki örneklerde konuya giriÅ yaptık. Döngü ifadelerini ileride ayrıntıyla inceleyeceÄiz.
SORU 1: AÅaÄıdaki switch ifadesinin tamamlanması için eksik parçalar nelerdir?
```java
public class SwitchCase {
public static void main(String[] args) {
int classNo=2;
switch (A) {
B 1:
System.out.println("Class-1");
C ;
B 2:
System.out.println("Class-2");
C ;
}}}
```
Cevap: A= classNo, B= case, C= break
SORU 2: AÅaÄıda bulunan kod bloÄunda value deÄeri 2 ise kod çıktısı nasıl olur?
```java
import java.util.Scanner;
public class SwitchCase {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int value=input.nextInt();
switch(value) {
case 1: case 2: case 3:
System.out.println("Value-3");
break;
default:
System.out.println("Value is invalid.");
break;
}}}
```
Cevap: Value deÄeri 2 olması durumunda case 2 çalıÅtırılır. Case 2 bloÄunda break komutu olmadıÄından bir sonraki Case 3 bloÄu çalıÅtırılır ve Value-3 çıktısı elde edilir.
**Kaynakça:**
[1]: *The Switch Statement*, https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
[2]: *Switch Statement in Java*, https://www.geeksforgeeks.org/switch-statement-in-java/
[3]: *Java Switch Statements*, https://www.w3schools.com/java/java_switch.asp
[4]: *Java Switch Case*, https://www.journaldev.com/588/java-switch-case-string