Jawaban:
break
meninggalkan satu lingkaran, continue
melompat ke iterasi berikutnya.
Lihat Pernyataan Percabangan untuk detail lebih lanjut dan contoh kode:
break
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 loop
System.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/462373
for (int i = 0; i < 4; ++i)
{
if (i == 2)
break http;
Saya kira ini dari Joshua Bloch quizzle. :)
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.
Kode Ini Menjelaskan Segalanya:
public static void main(String[] args) {
for(int i=0;i<10;i++)
{
if (i==4)
{
break;
}
System.out.print(i+"\t");
}
System.out.println();
for(int i=0;i<10;i++)
{
if (i==4)
{
continue;
}
System.out.print(i+"\t");
}
}
Keluaran:
0 1 2 3
0 1 2 3 5 6 7 8 9
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:
for(int i=0; i<10; i++) {
System.out.println(i);
}
Keluaran:
0
1
2
3
4
5
6
7
8
9
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.
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==4) {
break;
}
}
Keluaran:
0
1
2
3
4
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.
for(int i=0; i<10; i++) {
if(i==4) {
continue;
}
System.out.println(i);
}
Keluaran:
0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9
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;
}
}
}
}
Keluaran:
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]
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 outer1
label 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]
Sumber: Loops in Java - Ultimate Guide
Jawaban luar biasa sederhana dan akurat.
Saya akan menambahkan contoh kode.
C:\oreyes\samples\java\breakcontinue>type BreakContinue.java
class BreakContinue {
public static void main( String [] args ) {
for( int i = 0 ; i < 10 ; i++ ) {
if( i % 2 == 0) { // if pair, will jump
continue; // 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 BreakContinue
The number is 1
The number is 3
The number is 5
The number is 7
continue
melewatkan loop saat ini dan MOVES KE loop berikutnya sedangkan break
MOVES OUT dari loop dan mengeksekusi pernyataan berikutnya setelah loop. Saya mempelajari perbedaannya menggunakan kode berikut. Lihat output yang berbeda. Semoga ini bisa membantu.
public static void 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 3
public static void 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
Pertimbangkan yang berikut ini:
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);
Akan menampilkan sesuatu dengan efek
0
0
0
0
0
5
The break
pernyataan istirahat keluar dari loop (pernyataan berikutnya yang akan dieksekusi adalah yang pertama setelah brace penutupan), sedangkan continue
dimulai loop lebih pada iterasi berikutnya.
Contoh sederhana:
break
meninggalkan loop.
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
break;
}
m++;
}
System.out.printl("m:"+m); // m:2
continue
akan kembali untuk memulai loop.
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
continue; // Go back to start and dont execute m++
}
m++;
}
System.out.printl("m:"+m); // m:4
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.
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
Kode di atas akan mencetak hasilnya: 0 1 2 4
Sekarang pertimbangkan kode ini
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println(i);
}
Kode ini akan mencetak 0 1 2
Itulah perbedaan mendasar dalam melanjutkan dan memecah.
inilah semantik istirahat:
int[] a = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// find 9
for(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 = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// skip all odds
for(int i = 0; i < a.Length; i++)
{
if (a[i] % 2 == 1)
goto goContinue;
Console.WriteLine(a[i].ToString());
goContinue:;
}
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.
class BreakDemo {
public static void 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.
public class BreakWithLabelDemo {
public static void 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
class ContinueDemo {
public static void 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's
if (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.
public class ContinueWithLabelDemo {
public static void 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:
0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3
jika Anda memiliki pertanyaan, Anda dapat melihat tutorial Java ini: masukkan deskripsi tautan di sini
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 continue
digunakan
public static void 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:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Start For loop i = 3
End For loop i = 3
Start For loop i = 4
End For loop i = 4
Completely out of For loop
Kapan break
digunakan
public static void 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:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Completely 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.
if
ada di dalam loop, dalam hal ini ada banyak titik.