1. Struktur melingkar
Pernyataan loop dapat berulang kali menjalankan sepotong kode tertentu ketika kondisi loop dipenuhi. Kode berulang ini disebut pernyataan loop body. Ketika badan loop ini berulang kali dieksekusi, kondisi penilaian loop perlu dimodifikasi menjadi false pada waktu yang tepat untuk mengakhiri loop, jika tidak loop akan terus mengeksekusi, membentuk loop mati.
Komposisi pernyataan loop:
Pernyataan Inisialisasi: Satu atau lebih pernyataan, pernyataan ini menyelesaikan beberapa operasi inisialisasi.
Pernyataan Bersyarat Keputusan: Ini adalah ekspresi boolean, yang dapat menentukan apakah akan menjalankan badan loop.
Pernyataan Loop-Body: Bagian ini adalah pernyataan loop-body, yang harus kita lakukan berkali-kali.
Pernyataan Kondisi Kontrol: Bagian ini dieksekusi sebelum kondisi penilaian siklus berikutnya dieksekusi setelah akhir dari badan siklus. Dengan mengendalikan variabel dalam kondisi loop, loop berakhir pada waktu yang tepat.
Misalnya: Ketika "HelloWorld" adalah output 10 kali di konsol,
Pernyataan Inisialisasi: Tentukan inisialisasi sebagai pertama kalinya.
Pernyataan bersyarat penilaian: berapa kali tidak dapat melebihi 10 kali.
Pernyataan Loop Body: output Pernyataan "HelloWorld".
Pernyataan Kondisi Kontrol: Berapa kali perubahan ke waktu berikutnya.
2. Struktur loop (untuk pernyataan loop)
Untuk format pernyataan loop:
untuk (pernyataan inisialisasi; pernyataan bersyarat penilaian; Kontrol pernyataan bersyarat) {
Pernyataan Loop Body;
}
Proses eksekusi:
A: Jalankan pernyataan inisialisasi
B: Jalankan pernyataan bersyarat penilaian untuk melihat apakah hasilnya benar atau salah: jika salah, loop berakhir; Jika itu benar, terus jalankan.
C: Eksekusi pernyataan tubuh loop
D: Jalankan pernyataan kondisi kontrol
E: Kembali ke B dan lanjutkan
flow chart:
Catatan:
(1) Hasil dari pernyataan bersyarat penilaian adalah tipe boolean
(2) Jika pernyataan loop adalah pernyataan tunggal, kawat gigi dapat dihilangkan; Jika banyak pernyataan, kawat gigi tidak dapat dihilangkan. Disarankan untuk tidak menghilangkannya.
(3) Secara umum: jika ada penjepit kiri, tidak ada titik koma, jika ada titik koma, tidak ada penyangga kiri.
Contoh kode:
1. Temukan jumlah angka genap antara 1-100:
/* Persyaratan: A: Temukan jumlah 1-100. B: Temukan jumlah angka genap antara 1-100*/class fortest1 {public static void main (string [] args) {// temukan jumlah 1-100. int sum1 = 0; untuk (int x = 1; x <= 100; x ++) {sum1+= x; } System.out.println ("1-100 adalah:"+sum1); System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Metode 2 int sum3 = 0; untuk (int x = 0; x <= 100; x+= 2) {sum3+= x;2. Temukan faktorial 5:
/* Persyaratan: Temukan faktorial 5. Apa itu faktorial? N! = n*(n-1)! Aturan n! = n*(n-1)*(n-2)*...*3*2*1 Jumlah Ideologi. Temukan pemikiran faktorial. */class fortest2 {public static void main (string [] args) {// Tentukan variabel hasil akhir int jc = 1; // X di sini sebenarnya dapat dimulai langsung dari 2 // untuk (int x = 1; x <= 5; x ++) untuk (int x = 2; x <= 5; x ++) {jc *= x; } System.out.println ("1-5 faktorial adalah:"+jc); }}3. Output Semua "Nomor Narcissus" di konsol:
/* Persyaratan: Output Semua "Nossus Nomor" pada Analisis Konsol: Kami tidak tahu apa itu "nomor narcissus", apa yang Anda minta saya lakukan? Angka narsissus yang disebut merujuk pada angka tiga digit, dan jumlah kubus dari angka mereka sama dengan angka itu sendiri. Misalnya: 153 adalah bakung. 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 A: Angka tiga digit sebenarnya memberi tahu kita rentangnya. B: Melalui loop untuk, kita dapat memperoleh setiap nomor tiga digit, tetapi masalahnya adalah bagaimana mendapatkan data dari angka tiga digit ini, sepuluh, dan ratusan. Bagaimana kita mendapatkan data data, sepuluh, dan ratusan? Misalkan ada data: 153 GE: 153%10 = 3 SHI: 153/10%10 = 5 BAI: 153/10/10%10 = 1 Qian: x/10/10/10%10 WAN: x/10/10/10/10%10 ... C: Biarkan GE*GE+SHI*SHI*SHI+BAI*BAI*BAI*BAYAN. */class fortest3 {public static void main (string [] args) {// Digit triple sebenarnya memberi tahu kita rentangnya. untuk (int x = 100; x <1000; x ++) {int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; // Biarkan ge*ge*ge+shi*shi*shi+bai*bai*bai dibandingkan dengan data if (x == (ge*ge*ge+shi*shi*shi+bai*bai)) {// jika sama, output data pada konsol. System.out.println (x); }}}}3. Struktur loop (saat pernyataan loop)
Sedangkan format pernyataan loop:
while (penilaian pernyataan bersyarat) {
Pernyataan Loop Body;
}
// Pernyataan inisialisasi format yang diperluas;
while (penilaian pernyataan bersyarat) {
Pernyataan Loop Body;
Pernyataan kondisi kontrol;
}
flow chart:
Perbedaan antara loop dan loop sementara:
Untuk pernyataan loop dan sementara pernyataan loop dapat dikonversi secara setara, tetapi masih ada beberapa perbedaan kecil.
(1) Perbedaan penggunaan:
Variabel yang dikendalikan oleh pernyataan bersyarat kontrol tidak dapat diakses setelah for loop berakhir, dan dapat terus digunakan setelah loop sementara berakhir. Jika Anda ingin terus menggunakannya, gunakan sementara, jika tidak, disarankan untuk digunakan. Alasannya adalah bahwa for loop end dan variabel menghilang dari memori, yang dapat meningkatkan efisiensi penggunaan memori.
(2) Perbedaan adegan:
Karena loop cocok untuk operasi untuk penilaian jangkauan sementara loop cocok untuk operasi untuk jumlah penilaian yang tidak jelas
Contoh kode:
Gunung tertinggi di negara kita adalah Gunung Everest: 8848m. Saya sekarang memiliki kertas yang cukup besar dengan ketebalan: 0,01m. Bolehkah saya bertanya, berapa kali saya melipatnya untuk memastikan bahwa ketebalannya tidak lebih rendah dari ketinggian mount Everest?
/* Gunung tertinggi di negara kita adalah Gunung Everest: 8848m. Saya sekarang memiliki kertas yang cukup besar dengan ketebalan: 0,01m. Bolehkah saya bertanya, berapa kali saya melipat, saya dapat memastikan bahwa ketebalannya tidak lebih rendah dari ketinggian mount Everest? Analisis: A: Tentukan variabel statistik, nilai standarnya adalah 0 B: Puncak tertinggi adalah Gunung Everest: 8848m Ini adalah ketebalan akhir. Saya sekarang memiliki selembar kertas yang cukup besar, dengan ketebalan: 0,01m Ini adalah ketebalan awal C: Berapa kali saya lipat, saya dapat memastikan bahwa ketebalannya tidak lebih rendah dari ketinggian mount Everest? Perubahan apa yang akan terjadi jika saya melipatnya sekali? Artinya, ketebalannya dua kali lebih tebal dari sebelumnya. D: Selama ketebalan setiap perubahan tidak melebihi ketinggian mount Everest, itu akan dilipat, variabel statistik ++ e: variabel statistik output. */class whiletest01 {public static void main (string [] args) {// tentukan variabel statistik, nilai default adalah 0 int count = 0; // Puncak tertinggi adalah Gunung Everest: 8848m Ini adalah ketebalan terakhir // Saya sekarang memiliki kertas yang cukup besar, dengan ketebalan: 0,01m ini adalah ketebalan awal // untuk kesederhanaan, saya mengubah 0,01 menjadi 1, dan cara yang sama 8848 menjadi 884800 int end = 884800; int start = 1; sementara (mulai <end) {// selama ketebalan setiap perubahan tidak melebihi ketinggian mount Everest, lipat, dan variabel statistik ++ count ++; // Perubahan apa yang akan terjadi jika dilipat sekali? Ketebalannya dua kali lipat sebelumnya. Mulai *= 2; System.out.println ("th"+count+"ketebalan adalah"+mulai); } // Variabel statistik output. System.out.println ("akan ditumpuk"+hitungan+"waktu"); }}4. Struktur loop (lakukan… saat pernyataan loop)
Format Dasar:
Mengerjakan {
Pernyataan Loop Body;
} while ((pernyataan bersyarat penilaian); [/kode]
Format diperpanjang:
Pernyataan inisialisasi;
Mengerjakan {
Pernyataan Loop Body;
Pernyataan kondisi kontrol;
} while ((pernyataan bersyarat penilaian); [/kode]
flow chart:
5. Perbedaan dan tindakan pencegahan untuk struktur siklik:
Tiga pernyataan loop sebenarnya dapat menyelesaikan fungsi yang sama, yang berarti bahwa mereka dapat dikonversi secara setara, tetapi masih ada perbedaan kecil:
Do ... sementara Loop akan menjalankan loop body setidaknya sekali. Untuk loop dan sementara loop hanya akan menjalankan loop body saat kondisinya benar
1. Catatan:
Saat menulis program, Anda harus memberikan prioritas pada loop untuk, kemudian pertimbangkan loop whene, dan akhirnya pertimbangkan do ... while loop.
Kode berikut adalah loop mati:
while (true) {}
untuk(;;){}
2. Penggunaan loop bersarang: badan loop pernyataan loop itu sendiri adalah pernyataan loop
(1) Pertanyaan 1: Harap output pola bintang (*) dengan 4 baris dan 5 kolom:
Tip: Jumlah baris yang dikendalikan oleh loop luar, dan jumlah kolom yang dikendalikan oleh loop dalam
/* Requirements: Please output the following shape* ** *** **** **** ** ***** Tip: The outer loop controls the number of rows, the inner loop controls the number of columns*/class ForForTest01 { public static void main(String[] args) { // Through a simple observation, we see that this is a row is 5 and the number of columns is a changing shape//We first print out a shape of 5 rows and 5 kolom untuk (int x = 0; x <5; x ++) {untuk (int y = 0; y <5; y ++) {System.out.print ("*"); } System.out.println (); } System.out.println ("-----------------------------------------------------); // Kami telah mengimplementasikan bentuk 5 baris dan 5 kolom // tetapi ini bukan yang kami inginkan // Apa yang kami inginkan adalah perubahan jumlah kolom // Bagaimana jumlah kolom+//Baris pertama: 1 kolom y = 0, y <= 0 y = 0, y <= 1, y ++ // Baris ketiga: 3 kolom y = 0, y <= 2, y ++ // Baris keempat: 4 kolom y = 0, y <= 3, y ++ // Baris kelima: 5 kolom y = 0, y, y, y ++ // ketika melihat perubahan x di loop luar, itu terjadi pada x = 0,3 untuk (int x = 0; x <5; x ++) {untuk (int y = 0; y <= x; y ++) {System.out.print ("*");(2) Pertanyaan 2: output Tabel multiplikasi sembilan sembilan pada konsol:
/* Persyaratan: output Tabel multiplikasi sembilan sembilan di konsol. Pertama, kita menulis tabel multiplikasi sembilan sembilan: 1*1 = 1 1*2 = 2 2*2 = 4 1*3 = 3 2*3 = 6 3*3 = 9 1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16 ... 1*9 = 9 2*9 = 18 3*9 = 27 ... mari kita lihat tabel sembilan-nine-nine ini seperti ini seperti ini seperti ini seperti ini seperti multiplication seperti ini seperti tabel sembilan-nine-nine ini seperti ini seperti ini seperti ini seperti ini. ********* ********* ********* CATATAN: '/X' X berarti apa pun, metode ini disebut karakter transfer. '/t' Posisi karakter tab (tombol tabtab) '/r' enter '/n' line break */class forFortest02 {public static void main (string [] args) {for (int x = 0; x <9; x ++) {for (int y = 0; y <= x; y ++) {System.out.print) {for (int y = y <= x; y ++) {out.out.print (" } System.out.println (); } System.out.println ("---------------------"); // Untuk menggunakan data, kita mulai dari 1 untuk (int x = 1; x <= 9; x ++) {untuk (int y = 1; y <= x; y ++) {System.out.print (y+"*"+x+"="+y*x+"/t"); } System.out.println (); }}}Efek Menjalankan:
6. Pernyataan Kontrol Jump:
Seperti yang telah kami katakan sebelumnya, Goto di Java adalah kata yang dipesan dan tidak dapat digunakan saat ini. Meskipun tidak ada pernyataan GOTO untuk meningkatkan keamanan program, itu juga membawa banyak ketidaknyamanan. Misalnya, saya ingin mengakhiri ketika loop tertentu tahu pada langkah tertentu, dan saya tidak bisa melakukan ini sekarang. Untuk menebus cacat ini, Java memberikan istirahat, melanjutkan dan kembali ke lompatan kontrol dan interupsi pernyataan.
Break interrupt
melanjutkan
kembali
1. Pernyataan Kontrol Jump (Break):
Gunakan skenario untuk istirahat:
~ Dalam Pernyataan Sakelar untuk Memilih Struktur
~ Dalam pernyataan loop (jika penilaian ditambahkan ke pernyataan loop)
Catatan: Tidak ada artinya untuk meninggalkan skenario penggunaan
Fungsi istirahat:
A: Break Out of the Single-Layer Loop
B: Break Out of Multi-Layer Loop
Untuk mencapai efek ini, Anda harus tahu sesuatu. Pernyataan dengan label. Nama tag harus mematuhi aturan penamaan java
Format:
Nama Tag: Pernyataan
Contoh kode:
/* Control Jump Pernyataan: Break: Interrupt Lanjutkan: Lanjutkan: Return: Return Break: Interrupt Meaning SKENARIO Penggunaan: A: Pernyataan sakelar B: Pernyataan loop. (Jika penilaian ditambahkan ke pernyataan loop) Catatan: Tidak ada artinya untuk meninggalkan dua adegan di atas. Bagaimana cara menggunakannya? A: Keluar dari loop satu lapis B: keluar dari loop multi-layer untuk mencapai efek ini, Anda harus tahu sesuatu. Pernyataan dengan label. Format: Nama Tag: Pernyataan */kelas BreakDemo {public static void main (string [] args) {// offset sakelar luar atau loop // break; // mengimbangi loop lapisan tunggal untuk (int x = 0; x <10; x ++) {if (x == 3) {break; } System.out.println ("HelloWorld"); } System.out.println ("over"); System.out.println ("---------------"); // mengimbangi loop multi-lapisan WC: untuk (int x = 0; x <3; x ++) {nc: for (int y = 0; y <4; y ++) {if (y == 2) {// break nc; Break WC; } System.out.print ("*"); } System.out.println (); }}}Di baris 38, kami menambahkan tag ke loop luar yang disebut WC, dan kemudian melompat keluar dari tag ini di baris 42.
Efek Menjalankan:
Catatan: Dalam pengembangan aktual, fungsi melompat looping multi-layer hampir tidak mungkin digunakan.
2. Pernyataan Kontrol Jump (Lanjutkan):
Gunakan skenario untuk melanjutkan:
Tidak ada gunanya meninggalkan skenario penggunaan dalam pernyataan loop
Perbedaan antara melanjutkan dan istirahat:
Break Out of Single-Layer Loop Lanjutkan keluar dari loop dan memasuki eksekusi berikutnya.
Efeknya adalah sebagai berikut:
Pertanyaan Wawancara:
untuk (int x = 1; x <= 10; x ++) {if (x%3 == 0) {// Isi kode di sini} System.out.println ("Java Learning"); }Isi baris 4 dari kode di atas untuk memenuhi persyaratan berikut:
Saya ingin menghasilkan 2 kali di konsol: "Java Learn" Break;
Saya ingin mengeluarkan 7 kali di konsol: "Java Learning" Lanjutkan;
Saya ingin menghasilkan 13 kali di konsol: "Java Learning" System.out.println ("Java Learning");
3. Pernyataan Kontrol Jump (kembali)
Kata kunci pengembalian adalah tidak melompat keluar dari loop body. Fungsi yang lebih umum digunakan adalah untuk mengakhiri metode, yaitu keluar dari metode dan melompat ke metode yang disebut di lapisan atas.
Terus terang: fungsi pengembalian bukan untuk mengakhiri loop, tetapi untuk mengakhiri metode.
Efeknya adalah sebagai berikut:
Latihan pernyataan loop dikombinasikan dengan istirahat:
Pertanyaan Wawancara: Ibu Xiaofang memberinya 2.5 yuan sehari, dan dia akan menyimpannya. Namun, setiap kali hari ini adalah hari ke -5 menabung atau kelipatan 5, dia akan menghabiskan 6 yuan. Berapa hari Xiaofang dapat menyimpannya menjadi 100 yuan.
Implementasi Kode:
/* Persyaratan: Ibu Xiaofang memberinya 2.5 yuan sehari, dan dia akan menyimpannya. Namun, setiap kali hari ini adalah hari ke -5 menabung atau kelipatan 5, dia akan menghabiskan 6 yuan. Berapa hari Xiaofang dapat menyimpannya menjadi 100 yuan. Analisis: A: Ibu Xiaofang memberinya 2.5 yuan sehari, double daymoney = 2.5; B: Dia akan menghemat Double Daysum = 0; C: Store int daycount = 1 dari hari pertama; D: Berapa hari Xiaofang akan menghemat 100 yuan. Hasil ganda = 100; E: Jika hari ini adalah hari ke -5 menabung atau kelipatan 5, dia akan menghabiskan 6 yuan, menunjukkan bahwa dia perlu menilai nilai daycount. Jika 5 dibagi, 6 yuan akan dikurangi. daysum -= 6; Ini juga menyiratkan masalah, yaitu, jika bukan kelipatan 5 hari, uang harus diakumulasikan daysum += daymoney; F: Karena saya tidak tahu berapa hari itu, saya menggunakan loop dead. Setelah melebihi 100 yuan, saya akan keluar dari loop. */class whiledemo {public static void main (string [] args) {// uang yang akan disimpan setiap hari adalah 2.5 yuan double daymoney = 2.5; // Nilai inisialisasi penghematan adalah 0 double daysum = 0; // penyimpanan int daycount = 1 dari hari pertama; // Penyimpanan akhir tidak kurang dari 100 dan hasil int = 100; // Karena saya tidak tahu berapa hari itu, saya menggunakan loop dead, sementara (benar) {// mengakumulasi uang hari += daymoney; // Setelah melebihi 100 yuan, saya keluar dari loop. if (daysum> = result) {System.out.println ("Membelanjakan total 100 yuan untuk penyimpanan secara total"); merusak; } if (daycount%5 == 0) {// habiskan 6 yuan daysum -= 6; System.out.println ("Things"+daycount+"menghabiskan total 6 yuan"); } // Jumlah hari berubah daycount ++; }}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.