Câu trả lời:
break
để lại một vòng lặp, continue
nhảy đến lần lặp tiếp theo.
Xem Báo cáo phân nhánh để biết thêm chi tiết và mẫu mã:
break
Tuyên bố phá vỡ có hai hình thức: dán nhãn và không nhãn. Bạn đã thấy biểu mẫu chưa được gắn nhãn trong cuộc thảo luận trước đây về câu lệnh chuyển đổi. Bạn cũng có thể sử dụng dấu ngắt không được gắn nhãn để chấm dứt vòng lặp for, while hoặc do-while [...]
Một câu lệnh ngắt không được gắn nhãn sẽ chấm dứt chuyển đổi trong cùng, cho, trong khi hoặc do-while, nhưng một dấu ngắt được gắn nhãn sẽ chấm dứt một câu lệnh bên ngoài.
continue
Câu lệnh continue bỏ qua lần lặp hiện tại của một vòng lặp for, while hoặc do-while. Biểu mẫu không được gắn nhãn bỏ qua đến cuối cơ thể của vòng lặp trong cùng và đánh giá biểu thức boolean điều khiển vòng lặp. [...]
Một câu lệnh tiếp tục được gắn nhãn bỏ qua bước lặp hiện tại của một vòng lặp bên ngoài được đánh dấu bằng nhãn đã cho.
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");
Điều này sẽ dẫn đến đầu ra sau:
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
Bạn có thể gắn nhãn cho một khối, không chỉ là một vòng lặp for, sau đó ngắt / tiếp tục từ một khối lồng nhau sang một khối bên ngoài. Trong một số trường hợp, điều này có thể hữu ích, nhưng nói chung, bạn sẽ cố gắng tránh mã đó, ngoại trừ logic của chương trình sẽ tốt hơn nhiều so với trong ví dụ sau:
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));
}
}
}
Bởi vì điều đó là có thể, điều đó không có nghĩa là bạn nên sử dụng nó.
Nếu bạn muốn làm xáo trộn mã của mình theo một cách hài hước, bạn không chọn một tên có ý nghĩa, nhưng http: và theo dõi nó với một nhận xét, trông giống người ngoài hành tinh, giống như một webadress trong mã nguồn:
http://stackoverflow.com/questions/462373
for (int i = 0; i < 4; ++i)
{
if (i == 2)
break http;
Tôi đoán đây là từ một câu đố Joshua Bloch. :)
http://stackoverflow.com/questions/462373/
công việc quá?
Break rời khỏi vòng lặp hoàn toàn và thực hiện các câu lệnh sau vòng lặp. Trong khi Tiếp tục rời khỏi vòng lặp hiện tại và thực hiện với giá trị tiếp theo trong vòng lặp.
Mã này giải thích mọi thứ:
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");
}
}
Đầu ra:
0 1 2 3
0 1 2 3 5 6 7 8 9
Tuyên bố phá vỡ
Đôi khi cần phải thoát khỏi một vòng lặp trước khi vòng lặp hoàn thành lặp lại trên tất cả các giá trị bước. Ví dụ: lặp qua danh sách các số cho đến khi bạn tìm thấy một số thỏa mãn một điều kiện nhất định. Hoặc lặp qua một luồng các ký tự từ một tệp cho đến khi một ký tự nào đó được đọc.
Trong ví dụ sau, chúng tôi đang sử dụng một vòng lặp for đơn giản để in ra các giá trị từ 0 đến 9:
for(int i=0; i<10; i++) {
System.out.println(i);
}
Đầu ra:
0
1
2
3
4
5
6
7
8
9
Bây giờ nếu chúng ta thêm một câu lệnh break khi i == 4, mã của chúng ta sẽ thoát ra khỏi vòng lặp một khi tôi bằng 4. Bạn có thể sử dụng câu lệnh break để thoát ra khỏi các vòng lặp, trong khi các vòng lặp và vòng lặp do-while. Câu lệnh break sẽ chỉ thoát ra khỏi vòng lặp hiện tại. Để thoát ra khỏi vòng lặp bên ngoài từ vòng lặp bên trong lồng nhau, bạn sẽ cần sử dụng nhãn với câu lệnh break.
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==4) {
break;
}
}
Đầu ra:
0
1
2
3
4
Tiếp tục tuyên bố
Câu lệnh tiếp tục của Java bỏ qua lần lặp hiện tại của một vòng lặp và đi thẳng đến lần lặp tiếp theo. Sau khi gọi câu lệnh continue trong một vòng lặp for, việc thực hiện vòng lặp sẽ thực hiện giá trị bước và đánh giá điều kiện boolean trước khi tiến hành lần lặp tiếp theo. Trong ví dụ sau, chúng tôi sẽ in ra tất cả các giá trị từ 0 đến 9 trong một vòng lặp nhưng chúng tôi bỏ qua việc in ra 4.
for(int i=0; i<10; i++) {
if(i==4) {
continue;
}
System.out.println(i);
}
Đầu ra:
0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9
Nhãn vòng lặp - Tuyên bố phá vỡ Bạn có thể sử dụng nhãn trong các vòng lặp lồng nhau bằng cách chỉ định nơi bạn muốn thực hiện tiếp tục sau khi thoát ra khỏi vòng lặp bên trong. Thông thường, câu lệnh break sẽ chỉ thoát ra khỏi vòng lặp trong cùng, vì vậy khi bạn muốn thoát ra khỏi vòng lặp bên ngoài, bạn có thể sử dụng nhãn để thực hiện điều này, về cơ bản là thực hiện một thao tác tương tự như câu lệnh goto.
Ví dụ sau sử dụng 3 vòng lặp, tất cả được lồng vào nhau. Vì không có cách nào hoàn toàn thoát ra khỏi vòng lặp bên ngoài nhất từ bên trong vòng lặp bên trong nhất, chúng ta có thể sử dụng nhãn bên ngoài11 để thực hiện điều này và chỉ định nhãn bên cạnh câu lệnh 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;
}
}
}
}
Đầu ra:
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]
Lưu ý cách dòng cuối cùng được hiển thị là 0 [0], đó là nơi j == 3 và đó là nơi chúng tôi gọi là đường gãy ngoài1; để thoát ra khỏi vòng lặp bên ngoài nhất.
Nhãn vòng lặp - Tiếp tục tuyên bố
Bạn cũng có thể sử dụng nhãn với từ khóa tiếp tục để tiếp tục lặp từ một điểm cụ thể. Lấy ví dụ trước và chỉ thay đổi một dòng để chỉ định continue outer1;
thay vì break outer1;
sẽ khiến vòng lặp tiếp tục lặp từ outer1
nhãn thay vì thoát ra khỏi vòng lặp. Lưu ý cách mỗi lần continue outer1;
được gọi, mã tiếp tục từ vòng lặp bên ngoài sau khi tăng chỉ số vòng lặp i lên 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âu trả lời tuyệt vời đơn giản và chính xác.
Tôi sẽ thêm một mẫu mã.
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
Một break
tuyên bố kết quả trong việc chấm dứt các tuyên bố mà nó áp dụng ( switch
, for
, do
, hoặc while
).
Một continue
câu lệnh được sử dụng để kết thúc vòng lặp hiện tại và điều khiển trả về câu lệnh lặp.
continue
bỏ qua vòng lặp thực thi hiện tại và chuyển sang vòng lặp tiếp theo trong khi break
MOVES OUT của vòng lặp và thực hiện câu lệnh tiếp theo sau vòng lặp. Tôi đã học được sự khác biệt bằng cách sử dụng mã sau đây. Kiểm tra các đầu ra khác nhau. Hy vọng điều này sẽ giúp.
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
Hãy xem xét những điều sau đây:
int n;
for(n = 0; n < 10; ++n) {
break;
}
System.out.println(n);
phá vỡ làm cho vòng lặp chấm dứt và giá trị của n là 0.
int n;
for(n = 0; n < 10; ++n) {
continue;
}
System.out.println(n);
tiếp tục làm cho bộ đếm chương trình trở về dòng đầu tiên của vòng lặp (điều kiện được kiểm tra và giá trị của n là tăng) và giá trị cuối cùng của n là 10.
Cũng cần lưu ý rằng ngắt chỉ chấm dứt việc thực hiện vòng lặp trong vòng:
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);
Sẽ tạo ra một cái gì đó để có hiệu lực của
0
0
0
0
0
5
Câu break
lệnh thoát ra khỏi vòng lặp (câu lệnh tiếp theo được thực hiện là câu lệnh đầu tiên sau dấu ngoặc đóng), trong khi continue
bắt đầu vòng lặp ở lần lặp tiếp theo.
Câu break
lệnh tồn tại cấu trúc điều khiển vòng lặp hiện tại và nhảy phía sau nó trong khi continue
thoát quá nhưng nhảy trở lại điều kiện lặp.
Ví dụ đơn giản:
break
rời khỏi vòng lặp.
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
break;
}
m++;
}
System.out.printl("m:"+m); // m:2
continue
sẽ quay trở lại để bắt đầu vòng lặp.
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
Để ngăn chặn bất cứ điều gì thực hiện nếu một điều kiện được đáp ứng, người ta nên sử dụng tiếp tục và để thoát khỏi vòng lặp nếu một điều kiện được đáp ứng, người ta nên sử dụng ngắt.
Ví dụ trong mã được đề cập dưới đây.
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
Đoạn mã trên sẽ in kết quả: 0 1 2 4
KHÔNG xem xét mã này
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println(i);
}
Mã này sẽ in 0 1 2
Đó là sự khác biệt cơ bản trong việc tiếp tục và phá vỡ.
đây là ngữ nghĩa của sự phá vỡ:
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:;
đây là ngữ nghĩa của tiếp tục:
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:;
}
Đầu tiên, tôi nghĩ bạn nên biết rằng có hai loại phá vỡ và tiếp tục trong Java được gắn nhãn là phá vỡ, phá vỡ không gắn nhãn, tiếp tục được gắn nhãn và tiếp tục không gắn nhãn. Bây giờ, tôi sẽ nói về sự khác biệt giữa chúng.
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");
}
}
Một tuyên bố phá vỡ không được gắn nhãn chấm dứt chuyển đổi trong cùng, cho, trong khi, tuyên bố 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.
}
}
}
Một dấu ngắt có nhãn chấm dứt một câu lệnh bên ngoài. Nếu bạn javac và java bản demo này, bạn sẽ nhận được:
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.");
}
Một câu lệnh tiếp tục không được gắn nhãn bỏ qua lần lặp hiện tại của câu lệnh 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
}
}
}
Một câu lệnh tiếp tục được gắn nhãn bỏ qua lần lặp hiện tại của một vòng lặp bên ngoài được đánh dấu bằng lable đã cho, nếu bạn javac và java bản demo, bạn sẽ nhận được:
0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3
nếu bạn có bất kỳ câu hỏi nào, bạn có thể xem hướng dẫn Java về điều này: nhập mô tả liên kết tại đây
Nói một cách đơn giản: break sẽ chấm dứt vòng lặp hiện tại và tiếp tục thực hiện tại dòng đầu tiên sau khi vòng lặp kết thúc. tiếp tục nhảy trở lại điều kiện vòng lặp và tiếp tục chạy vòng lặp.
Chương trình đơn giản để hiểu sự khác biệt giữa tiếp tục và phá vỡ
Khi continue
được sử dụng
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
Khi break
được sử dụng
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
Tiếp tục Tuyên bố dừng việc phát hành và bắt đầu tiếp theo
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 + "]");
}
và Break Statment dừng vòng lặp hoặc Thoát khỏi vòng lặp
Vì vậy, bạn đang ở trong một vòng lặp for hoặc while. Sử dụng nghỉ giải lao; sẽ đưa bạn ra ngoài vòng lặp. Như trong, nó sẽ kết thúc. Tiếp tục; sẽ bảo nó chạy lần lặp tiếp theo.
Không có điểm trong việc sử dụng tiếp tục trong câu lệnh if, nhưng phá vỡ; là hữu ích. Trong trường hợp chuyển đổi ... luôn luôn sử dụng break; để kết thúc một vụ án, vì vậy nó không thực hiện một vụ án khác.
if
bên trong một vòng lặp, trong trường hợp này có rất nhiều điểm.