for,whilevedo-whiledöngüleri yazmak ve aralarında seçim yapmakbreakvecontinueile döngüyü yönetmek- Bir dizi oluşturmak, elemanlarını okuyup değiştirmek, toplamlarını ve en büyüğünü bulmak
Bir sınıftaki 30 öğrencinin her biri için bir tebrik mesajı yazdırman gerektiğini düşün. 30 kez println yazabilirsin, peki ya 3000 öğrenci olsaydı? Bilgisayarlar aynı işi yorulmadan tekrarlamakta harikadır; bunun için döngüler vardır. Birçok değeri tek bir yerde tutmak için ise diziler kullanılır.
for ve while döngüleri
for döngüsü, adım sayısı önceden bilindiğinde kullanışlıdır. Başlığında üç kısım vardır: başlangıç (int i = 1), koşul (i <= 5) ve adım (i++). while döngüsü ise koşul doğru olduğu sürece tekrarlanır; kaç tekrar olacağını bilmediğimiz durumlar için uygundur.
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
System.out.println();
int sum = 0;
for (int i = 2; i <= 10; i += 2) {
sum += i;
}
System.out.println("Sum of even numbers: " + sum);
int balance = 100;
int years = 0;
while (balance < 200) {
balance += balance / 10;
years++;
}
System.out.println(years + " years, balance " + balance);
}
}1 2 3 4 5 Sum of even numbers: 30 8 years, balance 212
Son kısımda Elvin bankaya 100 manat yatırır ve her yıl tutara %10 eklenir. Kaç yıl beklemesi gerektiğini bilmediğimiz için while döngüsü kullanırız: döngü, bakiye 200'e ulaşana kadar devam eder. balance / 10 tam sayı bölmesidir; bu yüzden her yılın faizi tam manata aşağı yuvarlanır.
int türü ise her yıl kuruşları atar.do-while, break ve continue
do-while döngüsü koşulunu sonda kontrol eder; bu yüzden koşul yanlış olsa bile gövdesi en az bir kez çalışır. break döngüyü hemen bitirir, continue ise o anki adımın geri kalanını atlayıp bir sonraki adıma geçer.
public class Main {
public static void main(String[] args) {
int tries = 0;
do {
tries++;
System.out.println("Attempt " + tries);
} while (tries < 0);
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
continue;
}
if (i > 7) {
break;
}
System.out.print(i + " ");
}
System.out.println();
}
}Attempt 1 1 2 4 5 7
tries < 0 koşulu baştan yanlış olduğu hâlde “Attempt 1” yine de yazdırıldı. İkinci döngüde 3 ve 6 continue ile atlandı, 8'e gelindiğinde ise break döngüyü tamamen durdurdu; bu yüzden 9 ve 10 yazdırılmadı.
Diziler
Aynı türden, sabit sayıda değeri sırayla tutan bir nesne. Elemanlara 0'dan başlayan bir indeksle erişilir; dizinin uzunluğu oluşturulduktan sonra değişmez.
public class Main {
public static void main(String[] args) {
int[] scores = {85, 92, 78, 64, 99};
System.out.println("First: " + scores[0]);
System.out.println("Count: " + scores.length);
scores[3] = 70;
int sum = 0;
int max = scores[0];
for (int s : scores) {
sum += s;
if (s > max) {
max = s;
}
}
System.out.println("Average: " + (double) sum / scores.length);
System.out.println("Max: " + max);
String[] days = new String[3];
System.out.println(days[0]);
double[] temps = new double[2];
System.out.println(temps[1]);
}
}First: 85 Count: 5 Average: 84.8 Max: 99 null 0.0
int[] scores = {85, 92, ...};hazır değerlerle bir dizi oluşturur;new String[3]ise 3 boş yeri olan bir dizi oluşturur.scores.lengtheleman sayısıdır (parantez yoktur; bu bir metot değil, bir alandır).for (int s : scores)bir for-each döngüsüdür: dizinin her elemanını sıraylasdeğişkenine verir.- Yeni bir dizinin elemanları otomatik doldurulur: sayılar
0ya da0.0,booleanfalse, nesneler (örneğinString) isenullolur.
Arrays sınıfı ve iki boyutlu diziler
java.util.Arrays sınıfında diziler için hazır araçlar vardır: Arrays.toString() diziyi okunabilir bir metne çevirir, Arrays.sort() ise elemanları artan sırayla dizer. Bir dizinin elemanları da dizi olabilir; böyle bir iki boyutlu dizi tablo gibidir: ilk indeks satırı, ikincisi sütunu gösterir.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {42, 7, 19, 3, 25};
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
int[][] table = new int[3][4];
for (int r = 0; r < table.length; r++) {
for (int c = 0; c < table[r].length; c++) {
table[r][c] = (r + 1) * (c + 1);
}
}
for (int[] row : table) {
System.out.println(Arrays.toString(row));
}
System.out.println(table[2][3]);
}
}[42, 7, 19, 3, 25] [3, 7, 19, 25, 42] [1, 2, 3, 4] [2, 4, 6, 8] [3, 6, 9, 12] 12
Önemli noktalar
for (başlangıç; koşul; adım)adım sayısı bilindiğinde,whileise bir koşul sağlandığı sürece tekrar için kullanılır.do-whilekoşulu sonda kontrol eder ve gövdeyi en az bir kez çalıştırır.breakdöngüyü bitirir,continueise bir sonraki adıma geçer.- Bir dizinin uzunluğu sabittir; indeksleri 0'dan
length - 1'e kadardır. Arrays.toString()bir diziyi yazdırmaya,Arrays.sort()ise sıralamaya yardım eder.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
for (int i = 0; i < 4; i++) döngüsü kaç kez tekrarlanır?