Pernyataan istirahat memiliki dua bentuk: berlabel dan tidak berlabel. Anda melihat formulir yang tidak berlabel dalam diskusi sebelumnya tentang pernyataan switch. Anda juga dapat menggunakan jeda tanpa label untuk mengakhiri loop for, while, atau do-while [...]
Pernyataan istirahat yang tidak berlabel mengakhiri sakelar terdalam, untuk, sementara, atau pernyataan do-while, tetapi istirahat berlabel mengakhiri pernyataan luar.
continue
Pernyataan melanjutkan melewatkan iterasi saat ini untuk loop for, while, atau do-while. Bentuk yang tidak berlabel melompat ke ujung tubuh loop paling dalam dan mengevaluasi ekspresi boolean yang mengontrol loop. [...]
Pernyataan lanjut berlabel melewatkan iterasi saat ini dari loop luar yang ditandai dengan label yang diberikan.
System.out.println ("starting loop:");for(int n =0; n <7;++n){System.out.println ("in loop: "+ n);if(n ==2){continue;}System.out.println (" survived first guard");if(n ==4){break;}System.out.println (" survived second guard");// continue at head of loop}// break out of loopSystem.out.println ("end of loop or exit via break");
Ini akan menghasilkan output sebagai berikut:
starting loop:
in loop:0
survived first guard
survived second guard
in loop:1
survived first guard
survived second guard
in loop:2
in loop:3
survived first guard
survived second guard
in loop:4
survived first guard
end of loop or exit via break
Anda bisa memberi label blok, tidak hanya for-loop, dan kemudian istirahat / lanjutkan dari blok bersarang ke yang luar. Dalam beberapa kasus ini mungkin berguna, tetapi secara umum Anda akan mencoba untuk menghindari kode seperti itu, kecuali logika program jauh lebih baik untuk dipahami daripada dalam contoh berikut:
first:for(int i =0; i <4;++i){
second:for(int j =0; j <4;++j){
third:for(int k =0; k <4;++k){System.out.println ("inner start: i+j+k "+(i + j + k));if(i + j + k ==5)continue third;if(i + j + k ==7)continue second;if(i + j + k ==8)break second;if(i + j + k ==9)break first;System.out.println ("inner stop: i+j+k "+(i + j + k));}}}
Karena itu mungkin, itu tidak berarti Anda harus menggunakannya.
Jika Anda ingin mengaburkan kode Anda dengan cara yang lucu, Anda tidak memilih nama yang jahat, tetapi http: dan ikuti dengan komentar, yang terlihat asing, seperti webadress dalam kode sumber:
http://stackoverflow.com/questions/462373for(int i =0; i <4;++i){if(i ==2)break http;
Gagasan bagus dengan pendidikan buruk, bukankah hanya memiliki http://stackoverflow.com/questions/462373/pekerjaan juga?
Caelum
@ user2104648: ya, itu pasti merupakan kesalahan tempel cut 'n'.
pengguna tidak diketahui
28
Break meninggalkan loop sepenuhnya dan menjalankan pernyataan setelah loop. Sedangkan Lanjutkan meninggalkan iterasi saat ini dan dieksekusi dengan nilai berikutnya dalam loop.
Kadang-kadang perlu untuk keluar dari loop sebelum loop selesai sepenuhnya iterasi semua nilai langkah. Misalnya, mengulang daftar angka sampai Anda menemukan nomor yang memenuhi syarat tertentu. Atau mengulangi aliran karakter dari file hingga karakter tertentu dibaca.
Dalam contoh berikut, kami menggunakan loop sederhana untuk mencetak nilai dari 0 hingga 9:
for(int i=0; i<10; i++){System.out.println(i);}
Keluaran:
0123456789
Sekarang jika kita menambahkan pernyataan break ketika i == 4, kode kita akan keluar dari loop setelah saya sama dengan 4. Anda dapat menggunakan pernyataan break untuk keluar dari loop, sementara loop dan loop do-while. Pernyataan break hanya akan keluar dari loop saat ini. Untuk keluar dari loop luar dari loop dalam bersarang, Anda harus menggunakan label dengan pernyataan break.
Pernyataan Java berlanjut melompati iterasi saat ini dari loop dan langsung ke iterasi berikutnya. Setelah memanggil pernyataan lanjut dalam for for, eksekusi loop akan mengeksekusi nilai langkah dan mengevaluasi kondisi boolean sebelum melanjutkan dengan iterasi berikutnya. Pada contoh berikut, kami mencetak semua nilai dari 0 hingga 9 dalam satu lingkaran tetapi kami melewatkan pencetakan 4.
01235<---- SKIPPED OVER 4 and continued with next loop iteration6789
Label Loop - Break Statement
Anda dapat menggunakan label dalam loop bersarang dengan menentukan di mana Anda ingin melanjutkan eksekusi setelah keluar dari loop dalam. Biasanya, pernyataan break hanya akan keluar dari loop terdalam sehingga ketika Anda ingin keluar dari loop luar, Anda dapat menggunakan label untuk mencapai ini, pada dasarnya melakukan sesuatu yang mirip dengan pernyataan goto.
Contoh berikut menggunakan 3 loop, semua bersarang di dalam satu sama lain. Karena tidak ada cara yang sepenuhnya keluar dari loop paling luar dari dalam loop paling dalam, kita dapat menggunakan label "outer1" untuk mencapai ini dan menentukan label di sebelah pernyataan break.
outer1:for(int i=0; i<5; i++){for(int j=0; j<4; j++){for(int k=0; k<2; k++){System.out.println("["+ i +"]["+ j +"]["+ k +"]");if(j ==3){break outer1;}}}}
Perhatikan bagaimana baris terakhir yang ditampilkan adalah " 0 [0]" yang merupakan tempat j == 3 dan di situlah kami menyebutnya "break outer1;" untuk keluar dari loop paling luar.
Label Lingkaran - Lanjutkan Pernyataan
Anda juga dapat menggunakan label dengan kata kunci terus untuk melanjutkan pengulangan dari titik tertentu. Mengambil contoh sebelumnya dan hanya mengubah satu baris untuk menentukan continue outer1;alih-alih break outer1;akan menyebabkan loop untuk melanjutkan looping dari outer1label alih-alih keluar dari loop. Perhatikan bagaimana setiap kali continue outer1;dipanggil, kode berlanjut dari loop luar setelah menambah indeks loop i dengan 1.
outer1:for(int i=0; i<5; i++){for(int j=0; j<4; j++){for(int k=0; k<2; k++){System.out.println("["+ i +"]["+ j +"]["+ k +"]");if(j ==3){continue outer1;}}}[0][0][0][0][0][1][0][1][0][0][1][1][0][2][0][0][2][1][0][3][0]<---- CONTINUE WITH LABEL CALLED HERE[1][0][0]<---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP[1][0][1][1][1][0][1][1][1][1][2][0][1][2][1][1][3][0]<---- CONTINUE WITH LABEL CALLED HERE[2][0][0]<---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP[2][0][1][2][1][0][2][1][1][2][2][0][2][2][1][2][3][0]<---- CONTINUE WITH LABEL CALLED HERE[3][0][0]<---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP[3][0][1][3][1][0][3][1][1][3][2][0][3][2][1][3][3][0]<---- CONTINUE WITH LABEL CALLED HERE[4][0][0]<---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP[4][0][1][4][1][0][4][1][1][4][2][0][4][2][1][4][3][0]
C:\oreyes\samples\java\breakcontinue>type BreakContinue.java
classBreakContinue{publicstaticvoid main(String[] args ){for(int i =0; i <10; i++){if( i %2==0){// if pair, will jumpcontinue;// don't go to "System.out.print" below.}System.out.println("The number is "+ i );if( i ==7){break;// will end the execution, 8,9 wont be processed}}}}
C:\oreyes\samples\java\breakcontinue>java BreakContinueThe number is 1The number is 3The number is 5The number is 7
continuemelewatkan loop saat ini dan MOVES KE loop berikutnya sedangkan breakMOVES OUT dari loop dan mengeksekusi pernyataan berikutnya setelah loop. Saya mempelajari perbedaannya menggunakan kode berikut. Lihat output yang berbeda. Semoga ini bisa membantu.
publicstaticvoid main(String[] args){for(int i =0; i <5; i++){if(i ==3){continue;}System.out.print(i);}}//prints out 0124, continue moves to the next iteration skipping printing 3publicstaticvoid main(String[] args){for(int i =0; i <5; i++){if(i ==3){break;}System.out.print(i);}}//prints out 012, break moves out of the loop hence doesnt print 3 and 4
int n;for(n =0; n <10;++n){break;}System.out.println(n);
break menyebabkan loop berakhir dan nilai n adalah 0.
int n;for(n =0; n <10;++n){continue;}System.out.println(n);
melanjutkan menyebabkan penghitung program untuk kembali ke baris pertama dari loop (kondisi diperiksa dan nilai n bertambah) dan nilai akhir n adalah 10.
Perlu dicatat juga bahwa break hanya menghentikan eksekusi loop yang ada di dalamnya:
int m;for(m =0; m <5;++m){int n;for(n =0; n <5;++n){break;}System.out.println(n);}System.out.println(m);
Anda memiliki masalah pelingkupan variabel dalam contoh Anda.
Darron
3
The breakpernyataan istirahat keluar dari loop (pernyataan berikutnya yang akan dieksekusi adalah yang pertama setelah brace penutupan), sedangkan continuedimulai loop lebih pada iterasi berikutnya.
The breakpernyataan ada struktur kontrol perulangan saat ini dan melompat di belakangnya sementara continuekeluar juga, tapi melompat kembali ke kondisi perulangan.
Untuk mencegah segala sesuatu dari eksekusi jika suatu kondisi terpenuhi seseorang harus menggunakan melanjutkan dan untuk keluar dari loop jika suatu kondisi terpenuhi seseorang harus menggunakan istirahat.
int[] a =newint[]{1,3,4,6,7,9,10};// find 9for(int i =0; i < a.Length; i++){if(a[i]==9)goto goBreak;Console.WriteLine(a[i].ToString());}
goBreak:;
inilah semantik dari melanjutkan:
int[] a =newint[]{1,3,4,6,7,9,10};// skip all oddsfor(int i =0; i < a.Length; i++){if(a[i]%2==1)goto goContinue;Console.WriteLine(a[i].ToString());
goContinue:;}
Tidak memiliki C # yang rusak; dan melanjutkan; pernyataan? Saya tidak bisa mempercayainya.
OscarRyz
Ya C # memiliki, saya hanya menjelaskan semantik istirahat dan melanjutkan :-)
Michael Buen
1
Anda tidak dapat menjelaskan apa pun, Anda hanya memposting beberapa kode. Kode bahkan tidak berkomentar. Sepotong kode bukanlah penjelasan, atau 'semantik'.
Marquis of Lorne
1
Pertama, saya pikir Anda harus tahu bahwa ada dua jenis istirahat dan melanjutkan di Jawa yang berlabel istirahat, istirahat tidak berlabel, berlabel terus dan berlabel melanjutkan. Sekarang, saya akan berbicara tentang perbedaan di antara mereka.
classBreakDemo{publicstaticvoid main(String[] args){int[] arrayOfInts ={32,87,3,589,12,1076,2000,8,622,127};int searchfor =12;int i;boolean foundIt =false;for(i =0; i < arrayOfInts.length; i++){if(arrayOfInts[i]== searchfor){
foundIt =true;break;//this is an unlabeled break,an unlabeled break statement terminates the innermost switch,for,while,do-while statement.}}if(foundIt){System.out.println("Found "+ searchfor +" at index "+ i);}else{System.out.println(searchfor +" not in the array");}}
Pernyataan istirahat yang tidak berlabel mengakhiri sakelar terdalam, untuk, sementara, pernyataan do-while.
publicclassBreakWithLabelDemo{publicstaticvoid main(String[] args){
search:for(int i =0; i <3; i++){for(int j =0; j <5; j++){System.out.println(i +" - "+ j);if(j ==3)break search;//this is an labeled break.To notice the lab which is search.}}}
Istirahat berlabel mengakhiri pernyataan luar. Jika Anda javac dan java demo ini, Anda akan mendapatkan:
0 - 0
0 - 1
0 - 2
0 - 3
classContinueDemo{publicstaticvoid main(String[] args){String searchMe ="peter piper picked a "+"peck of pickled peppers";int max = searchMe.length();int numPs =0;for(int i =0; i < max; i++){// interested only in p'sif(searchMe.charAt(i)!='p')continue;//this is an unlabeled continue.// process p's
numPs++;}System.out.println("Found "+ numPs +" p's in the string.");}
Pernyataan melanjutkan yang tidak berlabel akan melompati iterasi saat ini dari pernyataan for, while, do-while.
publicclassContinueWithLabelDemo{publicstaticvoid main(String[] args){
search:for(int i =0; i <3; i++){for(int j =0; j <5; j++){System.out.println(i +" - "+ j);if(j ==3)continue search;//this is an labeled continue.Notice the lab which is search}}}
Pernyataan lanjut berlabel melewatkan iterasi saat ini dari loop luar yang ditandai dengan label yang diberikan, jika Anda javac dan java demo, Anda akan mendapatkan:
Sederhananya: break akan mengakhiri loop saat ini, dan melanjutkan eksekusi pada baris pertama setelah loop berakhir. terus melompat kembali ke kondisi loop dan terus menjalankan loop.
Program sederhana untuk memahami perbedaan antara melanjutkan dan istirahat
Kapan continuedigunakan
publicstaticvoid main(String[] args){System.out.println("HelloWorld");for(int i =0; i <5; i++){System.out.println("Start For loop i = "+ i);if(i==2){System.out.println("Inside if Statement for i = "+i);continue;}System.out.println("End For loop i = "+ i);}System.out.println("Completely out of For loop");}OutPut:HelloWorldStartFor loop i =0EndFor loop i =0StartFor loop i =1EndFor loop i =1StartFor loop i =2InsideifStatementfor i =2StartFor loop i =3EndFor loop i =3StartFor loop i =4EndFor loop i =4Completely out of For loop
Kapan breakdigunakan
publicstaticvoid main(String[] args){System.out.println("HelloWorld");for(int i =0; i <5; i++){System.out.println("Start For loop i = "+ i);if(i==2){System.out.println("Inside if Statement for i = "+i);break;}System.out.println("End For loop i = "+ i);}System.out.println("Completely out of For loop");}Output:HelloWorldStartFor loop i =0EndFor loop i =0StartFor loop i =1EndFor loop i =1StartFor loop i =2InsideifStatementfor i =2Completely out of For loop
Lanjutkan Statment, hentikan itration dan mulai ittration berikutnya Ex:
System.out.println("continue when i is 2:");for(int i =1; i <=3; i++){if(i ==2){System.out.print("[continue]");continue;}System.out.print("[i:"+ i +"]");}
dan Break Statment menghentikan loop atau Keluar dari loop
jadi Anda berada di dalam for atau while loop. Menggunakan istirahat; akan menempatkan Anda di luar lingkaran. Seperti dalam, itu akan berakhir. Terus; akan memintanya untuk menjalankan iterasi berikutnya.
Tidak ada gunanya menggunakan lanjutkan jika pernyataan, tetapi istirahat; berguna. Dalam switch ... case, selalu gunakan break; untuk mengakhiri suatu kasus, sehingga tidak mengeksekusi kasus lain.
"Tidak ada gunanya menggunakan lanjutkan jika pernyataan" - Ya, itu masuk akal. Misalnya, ketika suatu kondisi terpenuhi, Anda dapat melewati beberapa bagian pemrosesan pada langkah iterasi yang sebenarnya.
Sk8erPeter
Hal ini tidak hanya sia-sia tapi ilegal, kecuali yang ifada di dalam loop, dalam hal ini ada banyak titik.
Lihat Pernyataan Percabangan untuk detail lebih lanjut dan contoh kode:
break
continue
sumber
Ini akan menghasilkan output sebagai berikut:
Anda bisa memberi label blok, tidak hanya for-loop, dan kemudian istirahat / lanjutkan dari blok bersarang ke yang luar. Dalam beberapa kasus ini mungkin berguna, tetapi secara umum Anda akan mencoba untuk menghindari kode seperti itu, kecuali logika program jauh lebih baik untuk dipahami daripada dalam contoh berikut:
Karena itu mungkin, itu tidak berarti Anda harus menggunakannya.
Jika Anda ingin mengaburkan kode Anda dengan cara yang lucu, Anda tidak memilih nama yang jahat, tetapi http: dan ikuti dengan komentar, yang terlihat asing, seperti webadress dalam kode sumber:
Saya kira ini dari Joshua Bloch quizzle. :)
sumber
http://stackoverflow.com/questions/462373/
pekerjaan juga?Break meninggalkan loop sepenuhnya dan menjalankan pernyataan setelah loop. Sedangkan Lanjutkan meninggalkan iterasi saat ini dan dieksekusi dengan nilai berikutnya dalam loop.
Keluaran:
sumber
break
sepenuhnya keluar dari loop.continue
melompat laporan setelah terus pernyataan dan terus perulangan.sumber
Pernyataan Break
Kadang-kadang perlu untuk keluar dari loop sebelum loop selesai sepenuhnya iterasi semua nilai langkah. Misalnya, mengulang daftar angka sampai Anda menemukan nomor yang memenuhi syarat tertentu. Atau mengulangi aliran karakter dari file hingga karakter tertentu dibaca.
Dalam contoh berikut, kami menggunakan loop sederhana untuk mencetak nilai dari 0 hingga 9:
Keluaran:
Sekarang jika kita menambahkan pernyataan break ketika i == 4, kode kita akan keluar dari loop setelah saya sama dengan 4. Anda dapat menggunakan pernyataan break untuk keluar dari loop, sementara loop dan loop do-while. Pernyataan break hanya akan keluar dari loop saat ini. Untuk keluar dari loop luar dari loop dalam bersarang, Anda harus menggunakan label dengan pernyataan break.
Keluaran:
Lanjutkan Pernyataan
Pernyataan Java berlanjut melompati iterasi saat ini dari loop dan langsung ke iterasi berikutnya. Setelah memanggil pernyataan lanjut dalam for for, eksekusi loop akan mengeksekusi nilai langkah dan mengevaluasi kondisi boolean sebelum melanjutkan dengan iterasi berikutnya. Pada contoh berikut, kami mencetak semua nilai dari 0 hingga 9 dalam satu lingkaran tetapi kami melewatkan pencetakan 4.
Keluaran:
Label Loop - Break Statement Anda dapat menggunakan label dalam loop bersarang dengan menentukan di mana Anda ingin melanjutkan eksekusi setelah keluar dari loop dalam. Biasanya, pernyataan break hanya akan keluar dari loop terdalam sehingga ketika Anda ingin keluar dari loop luar, Anda dapat menggunakan label untuk mencapai ini, pada dasarnya melakukan sesuatu yang mirip dengan pernyataan goto.
Contoh berikut menggunakan 3 loop, semua bersarang di dalam satu sama lain. Karena tidak ada cara yang sepenuhnya keluar dari loop paling luar dari dalam loop paling dalam, kita dapat menggunakan label "outer1" untuk mencapai ini dan menentukan label di sebelah pernyataan break.
Keluaran:
Perhatikan bagaimana baris terakhir yang ditampilkan adalah " 0 [0]" yang merupakan tempat j == 3 dan di situlah kami menyebutnya "break outer1;" untuk keluar dari loop paling luar.
Label Lingkaran - Lanjutkan Pernyataan
Anda juga dapat menggunakan label dengan kata kunci terus untuk melanjutkan pengulangan dari titik tertentu. Mengambil contoh sebelumnya dan hanya mengubah satu baris untuk menentukan
continue outer1;
alih-alihbreak outer1;
akan menyebabkan loop untuk melanjutkan looping dariouter1
label alih-alih keluar dari loop. Perhatikan bagaimana setiap kalicontinue outer1;
dipanggil, kode berlanjut dari loop luar setelah menambah indeks loop i dengan 1.Sumber: Loops in Java - Ultimate Guide
sumber
Jawaban luar biasa sederhana dan akurat.
Saya akan menambahkan contoh kode.
sumber
Sebuah
break
hasil pernyataan dalam penghentian pernyataan untuk yang berlaku (switch
,for
,do
, atauwhile
).Sebuah
continue
pernyataan digunakan untuk mengakhiri loop iterasi saat ini dan kembali kontrol ke pernyataan loop.sumber
continue
melewatkan loop saat ini dan MOVES KE loop berikutnya sedangkanbreak
MOVES OUT dari loop dan mengeksekusi pernyataan berikutnya setelah loop. Saya mempelajari perbedaannya menggunakan kode berikut. Lihat output yang berbeda. Semoga ini bisa membantu.sumber
Pertimbangkan yang berikut ini:
break menyebabkan loop berakhir dan nilai n adalah 0.
melanjutkan menyebabkan penghitung program untuk kembali ke baris pertama dari loop (kondisi diperiksa dan nilai n bertambah) dan nilai akhir n adalah 10.
Perlu dicatat juga bahwa break hanya menghentikan eksekusi loop yang ada di dalamnya:
Akan menampilkan sesuatu dengan efek
sumber
The
break
pernyataan istirahat keluar dari loop (pernyataan berikutnya yang akan dieksekusi adalah yang pertama setelah brace penutupan), sedangkancontinue
dimulai loop lebih pada iterasi berikutnya.sumber
The
break
pernyataan ada struktur kontrol perulangan saat ini dan melompat di belakangnya sementaracontinue
keluar juga, tapi melompat kembali ke kondisi perulangan.sumber
Contoh sederhana:
break
meninggalkan loop.continue
akan kembali untuk memulai loop.sumber
Untuk mencegah segala sesuatu dari eksekusi jika suatu kondisi terpenuhi seseorang harus menggunakan melanjutkan dan untuk keluar dari loop jika suatu kondisi terpenuhi seseorang harus menggunakan istirahat.
Misalnya dalam kode yang disebutkan di bawah ini.
Kode di atas akan mencetak hasilnya: 0 1 2 4
Sekarang pertimbangkan kode ini
Kode ini akan mencetak 0 1 2
Itulah perbedaan mendasar dalam melanjutkan dan memecah.
sumber
inilah semantik istirahat:
inilah semantik dari melanjutkan:
sumber
Pertama, saya pikir Anda harus tahu bahwa ada dua jenis istirahat dan melanjutkan di Jawa yang berlabel istirahat, istirahat tidak berlabel, berlabel terus dan berlabel melanjutkan. Sekarang, saya akan berbicara tentang perbedaan di antara mereka.
Pernyataan istirahat yang tidak berlabel mengakhiri sakelar terdalam, untuk, sementara, pernyataan do-while.
Istirahat berlabel mengakhiri pernyataan luar. Jika Anda javac dan java demo ini, Anda akan mendapatkan:
Pernyataan melanjutkan yang tidak berlabel akan melompati iterasi saat ini dari pernyataan for, while, do-while.
Pernyataan lanjut berlabel melewatkan iterasi saat ini dari loop luar yang ditandai dengan label yang diberikan, jika Anda javac dan java demo, Anda akan mendapatkan:
jika Anda memiliki pertanyaan, Anda dapat melihat tutorial Java ini: masukkan deskripsi tautan di sini
sumber
Sederhananya: break akan mengakhiri loop saat ini, dan melanjutkan eksekusi pada baris pertama setelah loop berakhir. terus melompat kembali ke kondisi loop dan terus menjalankan loop.
sumber
coba kode ini di netbeans Anda akan mengerti perbedaan antara break dan continue
sumber
Program sederhana untuk memahami perbedaan antara melanjutkan dan istirahat
Kapan
continue
digunakanKapan
break
digunakansumber
Lanjutkan Statment, hentikan itration dan mulai ittration berikutnya Ex:
dan Break Statment menghentikan loop atau Keluar dari loop
sumber
jadi Anda berada di dalam for atau while loop. Menggunakan istirahat; akan menempatkan Anda di luar lingkaran. Seperti dalam, itu akan berakhir. Terus; akan memintanya untuk menjalankan iterasi berikutnya.
Tidak ada gunanya menggunakan lanjutkan jika pernyataan, tetapi istirahat; berguna. Dalam switch ... case, selalu gunakan break; untuk mengakhiri suatu kasus, sehingga tidak mengeksekusi kasus lain.
sumber
if
ada di dalam loop, dalam hal ini ada banyak titik.