for,whilevədo-whiledövrlərini yazmaq və aralarında seçim etməkbreakvəcontinueilə dövrü idarə etmək- Massiv yaratmaq, onun elementlərini oxumaq, dəyişmək və cəmini, ən böyüyünü tapmaq
Təsəvvür et ki, sinifdəki 30 şagirdin hər birinə təbrik mesajı çap etməlisən. 30 dəfə println yazmaq olar, amma 3000 şagird olsa necə? Kompüterlər eyni işi yorulmadan təkrarlamaqda əladır — bunun üçün dövrlər var. Çoxlu qiyməti bir yerdə saxlamaq üçün isə massivlərdən istifadə olunur.
for və while dövrləri
for dövrü addımların sayı əvvəlcədən məlum olanda rahatdır. Onun başlığında üç hissə var: başlanğıc (int i = 1), şərt (i <= 5) və addım (i++). while dövrü isə şərt doğru olduğu müddətcə təkrarlanır — nə qədər təkrar olacağını bilmədiyimiz hallar üçün uyğundur.
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 hissədə Elvin banka 100 manat qoyur və hər il məbləğə 10% əlavə olunur. Neçə il gözləməli olduğunu bilmirik, ona görə while dövründən istifadə edirik: dövr balans 200-ə çatana qədər davam edir. balance / 10 tam bölmədir, ona görə hər il faiz tam manata qədər aşağı yuvarlaqlaşdırılır.
int tipi isə hər il qəpikləri atır.do-while, break və continue
do-while dövrü şərti sonda yoxlayır, ona görə onun gövdəsi şərt yalan olsa belə ən azı bir dəfə icra olunur. break dövrü dərhal bitirir, continue isə cari addımın qalan hissəsini atlayıb növbəti addıma keçir.
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 şərti əvvəldən yalandır, amma «Attempt 1» yenə də çap olundu. İkinci dövrdə 3 və 6 continue ilə atlandı, 8-ə çatanda isə break dövrü tamamilə dayandırdı, ona görə 9 və 10 çap olunmadı.
Massivlər
Eyni tipli sabit sayda qiyməti ardıcıl saxlayan obyekt. Elementlərə 0-dan başlayan indekslə müraciət olunur, massivin uzunluğu isə yaradılandan sonra dəyişmir.
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, ...};massivi hazır qiymətlərlə yaradır;new String[3]isə 3 boş yeri olan massiv yaradır.scores.lengthelementlərin sayıdır (sonunda mötərizə yoxdur — bu, metod deyil, sahədir).for (int s : scores)— for-each dövrü: massivin hər elementini növbə iləsdəyişəninə verir.- Yeni massivin elementləri avtomatik doldurulur: ədədlər
0və ya0.0,boolean—false, obyektlər (məsələn,String) isənullolur.
Arrays sinfi və iki ölçülü massivlər
java.util.Arrays sinfində massivlər üçün hazır alətlər var: Arrays.toString() massivi oxunaqlı mətnə çevirir, Arrays.sort() isə elementləri artan sıra ilə düzür. Massivin elementləri də massiv ola bilər — belə iki ölçülü massiv cədvəl kimidir: birinci indeks sətri, ikincisi isə sütunu göstərir.
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
Əsas fikirlər
for (başlanğıc; şərt; addım)addımların sayı məlum olanda,whileisə şərt dəyişənə qədər təkrar üçün istifadə olunur.do-whileşərti sonda yoxlayır və gövdəni ən azı bir dəfə icra edir.breakdövrü bitirir,continueisə növbəti addıma keçir.- Massivin uzunluğu sabitdir, indekslər 0-dan
length - 1-ə qədərdir. Arrays.toString()massivi çap etməyə,Arrays.sort()isə sıralamağa kömək edir.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
for (int i = 0; i < 4; i++) dövrü neçə dəfə təkrarlanır?