JavaRush /Blog Java /Random-MS /Untuk Gelung di Jawa

Untuk Gelung di Jawa

Diterbitkan dalam kumpulan
Mereka mengatakan bahawa pengaturcara terbaik adalah pengaturcara yang malas. Daripada melakukan jenis tindakan yang sama beberapa kali, dia akan menghasilkan algoritma yang akan melakukan kerja untuknya. Dan dia akan melakukannya dengan baik supaya tidak perlu mengulanginya. Bagaimana untuk menggunakan gelung dalam Java - 1Untuk mengelakkan menulis kod yang sama berulang kali, gelung dicipta. Bayangkan kita perlu memaparkan nombor dari 0 hingga 99 ke konsol. Kod tanpa gelung:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
Kod ini akan mengambil 100 baris! Sangat banyak. Dan inilah rupanya dengan gelung:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Hanya 3 baris!

Apakah untuk gelung?

Gelung untuk ialah struktur kawalan kod program yang memecahkan kelinearan pelaksanaan algoritma dan membolehkan anda melaksanakan kod yang ditentukan berkali-kali. Sebagai contoh, anda perlu mengambil 30 titis ubat. Algoritma akan menjadi seperti ini:
  1. Sediakan gelas.
  2. Buka penutup.
  3. Dapatkan 1 titis.
  4. Dapatkan 2 titis.
  5. ...
  6. Dapatkan 30 titis.
  7. Tutup ubat.
  8. Ambil bahagian yang diterima.
Algoritma ini boleh dijelaskan dengan lebih cepat:
  1. Sediakan gelas.
  2. Buka penutup titisan.
  3. Dapatkan 30 titis.
  4. Tutup ubat.
  5. Ambil bahagian yang diterima.
Kami menggunakan gelung for hampir setiap hari dalam perbualan dengan orang lain: “...20 langkah di jalan...”, “...buat 10 ulangan dan 5 ulangan lagi 2 kali lebih perlahan...”, “.. .buat 5 pembelian dalam pelbagai kategori dan dapatkan hadiah…” Saya boleh meneruskan untuk masa yang lama, tetapi maksudnya jelas. Di Java, gelung for adalah penting untuk memastikan kod anda pendek dan ringkas.

Bagaimana gelung for berfungsi

A untuk gelung digunakan seperti ini:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Kesimpulan:

0
1
2
3
4
Jika kita menterjemah entri ini ke dalam bahasa manusia, kita mendapat yang berikut: " Buat pembolehubah i dengan nilai awal 0, sehingga ia mencapai 5, tambah 1 padanya dan pada setiap langkah tulis nilai i ke konsol ." Gelung for dalam Java adalah berdasarkan tiga peringkat, yang boleh diwakili oleh rajah berikut: Cara menggunakan gelung for dalam Java - 2Syarat untuk keluar dari gelung ialah ungkapan Boolean. Jika ia palsu, gelung akan tamat. Dalam contoh di atas, pembolehubah idinaikkan sebanyak 1. Jika nilainya kurang daripada 5, gelung diteruskan. Tetapi sebaik sahaja iia menjadi lebih besar daripada atau sama dengan 5, kitaran akan berhenti. Operator kaunter ialah ungkapan yang melakukan penukaran pada pembolehubah kaunter. Dalam contoh di atas, pembolehubah itelah meningkat sebanyak 1. Iaitu, gelung akan dilaksanakan tepat 5 kali. Jika pengendali kaunter menambah 2 pada pembolehubah i, hasilnya akan berbeza:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Kesimpulan:

0
2
4
Anda juga boleh mendarab pembolehubah, membahagi, menaikkan kepada kuasa, secara umum, lakukan apa sahaja yang anda mahu. Perkara utama ialah transformasi menghasilkan nombor. Badan gelung ialah sebarang kod yang boleh dilaksanakan. Dalam contoh di atas, badan gelung mengeluarkan nilai pembolehubah i ke konsol, tetapi kandungan badan ini dihadkan oleh tugas dan imaginasi. Merumuskan keseluruhan skema, prinsip untuk gelung ini adalah seperti berikut: kod yang terdapat dalam badan gelung akan dilaksanakan seberapa banyak kali bilangan penukaran yang akan dilakukan oleh pengendali kaunter sebelum syarat untuk keluar dari gelung dicapai . Jika anda menetapkan keadaan keluar gelung sebagai true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Kemudian kod selepas gelung akan ditandakan dengan ralat unreachable statement, kerana ia tidak akan dilaksanakan. Cabaran untuk kepintaran: akibat menjalankan kod di bawah, adakah " Loop ended" akan menjadi output kepada konsol atau adakah gelung akan berjalan tanpa henti?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Jawapan: akan ada. Pembolehubah i lambat laun akan mencapai nilai maksimumnya, dan peningkatan selanjutnya akan mengubahnya menjadi nilai negatif maksimum, akibatnya keadaan keluar akan dipenuhi (i < = -1).

untukSetiap gelung

Apabila bekerja dengan gelung, kadangkala anda perlu mengulang tatasusunan atau koleksi. Biasanya anda boleh lelaran melalui tatasusunan menggunakan gelung for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Dan memang betul. Walau bagaimanapun, untuk mengulangi semua elemen tatasusunan satu demi satu, mereka menghasilkan pembinaan forEach. Tandatangannya adalah seperti berikut:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
Anda boleh lelaran melalui tatasusunan rentetan dan mencetak setiap satu ke konsol dengan cara berikut:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Juga pendek dan padat. Yang penting, tak perlu fikir pasal kaunter dan keadaan keluar, semua dah buat untuk kita.

Bagaimana untuk gelung digunakan

Sekarang mari kita lihat beberapa contoh menggunakan gelung for dalam Java untuk menyelesaikan pelbagai masalah.

Kitaran terbalik (daripada lebih besar kepada lebih kecil)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Kesimpulan:

5
4
3
2
1

Beberapa pembolehubah dan menambah pembilang dalam badan gelung

Anda boleh menggunakan berbilang pembolehubah dalam gelung for, contohnya ia boleh ditukar dalam pernyataan balas:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Kesimpulan:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Atau isytiharkan dua pembolehubah dan gelung sehingga ia sama antara satu sama lain:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Kesimpulan:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Tidak mungkin tindakan ini mempunyai apa-apa nilai, tetapi adalah berguna untuk mengetahui tentang kemungkinan ini. Anda juga boleh membuat gelung dalam dalam gelung for. Dalam kes ini, bilangan langkah gelung akan didarabkan:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Kesimpulan:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
Dalam gelung kaunter, jadalah mungkin untuk mengakses kaunter gelung luar. Ini menjadikan gelung bersarang cara yang ideal untuk melintasi tatasusunan dua dimensi, tiga dimensi dan lain-lain:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Kesimpulan:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Penyelesaian awal kitaran

Jika anda perlu mengganggu gelung semasa memproses gelung, gunakan operator break, yang menghentikan badan semasa gelung. Semua lelaran berikutnya juga dilangkau:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
Kaedah ini akan mencetak kedudukan elemen carian pertama dalam tatasusunan:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Kesimpulan:

1

Kitaran yang tidak berkesudahan

Satu lagi cara untuk mencipta gelung infinite for adalah dengan membiarkan kawasan pengisytiharan balas, keadaan keluar dan pernyataan balas kosong:
for (;;) {
}
Tetapi perlu diingat bahawa dalam kebanyakan kes gelung tak terhingga adalah bukti ralat logik. Gelung sedemikian mesti mempunyai keadaan keluar. Cara menggunakan gelung for dalam Java - 3
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION