While döngüsü, For döngüsünden farklı olarak tek bir parametre alır ve bu parametre doğru olduğu müddetçe döngü sürer.
Kullanımı şu şekildedir;
while(KOŞUL) {
KOŞUL DOĞRU OLDUĞU MÜDDETÇE ÇALIŞACAK ALAN
}
Bu döngü çeşidine en basit örneği 1'den 10'a kadar olan sayıları ekrana yazdırmaya çalışarak görelim;
int a = 1;
while(a <= 10) {
System.out.println(a);
a++;
}
Görüldüğü üzere döngünün dışında bir a değişkeni belirledik ve a değişkenini 1'e eşitledir. Döngü içerisinde a değişkenini ekrana yazdırdıktan sonra a değişkenini 1 arttırdık. Bu sayede döngünün koşul kısmında yer alan a<=10 ifadesi gerçekleştiği müddetçe a değeri ekrana yazdırıldı. Ne zaman a++ yaptığımızda a değişkeni 11'e eşit olduysa o zaman ekrana yazdırma işlemi son buldu. Bunu anlamak için döngüyü şöyle güncellersek;
int a = 1;
while(a <= 10) {
System.out.println(a);
a++;
}
System.out.println("Son 'a' Değeri : "+a);
Ekrana çıktımız şöyle olacaktır;
1
2
3
4
5
6
7
8
9
10
Son 'a' Değeri : 11
Yani a değişkeninin değeri 11'e eşit olduğu anda döngünün koşulu sağlanmadığı için döngüden çıkmış oldu.
While Döngüsünün Akış Şeması
ÖRNEK
Bir sayının tam bölenlerini ve tam bölenlerinin toplamını bulun.
ÇÖZÜM
int deger = 60;
int bolen = 1;
int tamBolenlerToplami = 0;
while(bolen <= deger) {
if(deger%bolen == 0) {
System.out.println(deger+" sayısı "+bolen+" sayısına tam bölünür.");
tamBolenlerToplami = tamBolenlerToplami+bolen;
}
bolen++;
}
System.out.println("\n"+deger+" sayısının tam bölenlerinin toplamı: "+tamBolenlerToplami);
ÇIKTI
60 sayısı 1 sayısına tam bölünür.
60 sayısı 2 sayısına tam bölünür.
60 sayısı 3 sayısına tam bölünür.
60 sayısı 4 sayısına tam bölünür.
60 sayısı 5 sayısına tam bölünür.
60 sayısı 6 sayısına tam bölünür.
60 sayısı 10 sayısına tam bölünür.
60 sayısı 12 sayısına tam bölünür.
60 sayısı 15 sayısına tam bölünür.
60 sayısı 20 sayısına tam bölünür.
60 sayısı 30 sayısına tam bölünür.
60 sayısı 60 sayısına tam bölünür.
60 sayısının tam bölenlerinin toplamı: 168
ÖRNEK
While döngüsünü kullanarak kullanıcının istediği kadar sayıyı toplayabildiği bir uygulama yazın. java.util.Scanner sınıfını dahil etmeyi unutmayın! (import java.util.Scanner;)
ÇÖZÜM
Scanner kullanici = new Scanner(System.in);
double toplam = 0;
double girdi = -1;
int adet = 1;
System.out.print("Toplanacak Sayıları Girin (Çıkmak için 0 girin)\n\n");
while(girdi != 0) {
System.out.print(adet+". Sayı: ");
girdi = kullanici.nextDouble();
toplam = toplam + girdi;
adet++;
}
System.out.println("\n\nToplam: "+toplam);
ÇIKTI
Toplanacak Sayıları Girin (Çıkmak için 0 girin)
1. Sayı: 10
2. Sayı: 20
3. Sayı: 30
4. Sayı: 0
Toplam: 60.0