Różnica między instrukcją break I continue
Czy ktoś może mi powiedzieć jaka jest różnica między break
a continue
stwierdzeniami?
21 answers
break
pozostawia pętlę, continue
przeskakuje do następnej iteracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-24 17:59:37
Zobacz rozgałęzienia aby uzyskać więcej szczegółów i próbek kodu:
break
Instrukcja break ma dwie formy: oznakowane i nieoznakowane. Widziałeś nieoznakowana forma w poprzedniej dyskusji instrukcji switch. Ty może również użyć nieoznakowanej przerwy do zakończenia for, while lub do-while pętla [...]
Nieoznakowana instrukcja break kończy najbardziej wewnętrzny przełącznik, dla, while, lub do-while, ale znakowany break kończy zewnętrzna oświadczenie.
continue
Instrukcja continue pomija bieżącą iterację for, podczas gdy , lub pętla do-while. Nieoznakowana forma przeskakuje do końca najskrytszego ciało pętli i ocenia wyrażenie boolean, które kontroluje pętla. [...]
Instrukcja z etykietą continue pomija bieżącą iterację zewnętrznej pętli oznaczonej podaną etykietą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-10 23:04:09
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");
Spowoduje to następujące wyjście:
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
Można oznaczyć blok, a nie tylko pętlę for, a następnie przerwać / kontynuować z zagnieżdżonego bloku do zewnętrznego. W kilku przypadkach może to być przydatne, ale ogólnie będziesz starał się unikać takiego kodu, z wyjątkiem logiki programu jest znacznie lepiej zrozumieć niż w poniższym przykładzie:
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));
}
}
}
Ponieważ jest to możliwe, nie oznacza to, że powinieneś go używać.
Jeśli chcesz zaciemnić swój kod w zabawny sposób, nie wybierz złośliwą nazwę, ale http: i podążaj za nią z komentarzem, który wygląda obco, jak webadress w kodzie źródłowym:
http://stackoverflow.com/questions/462373
for (int i = 0; i < 4; ++i)
{
if (i == 2)
break http;
To chyba od Joshuy Bloch quizzle. :)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-11 03:15:22
Break całkowicie opuszcza pętlę i wykonuje polecenia po pętli. Podczas gdy Continue opuszcza bieżącą iterację i wykonuje z następną wartością w pętli.
Ten Kod Wyjaśnia Wszystko:
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");
}
}
Wyjście:
0 1 2 3
0 1 2 3 5 6 7 8 9
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-06 08:46:08
break
całkowicie wychodzi z pętli. continue
pomija instrukcje po continue i zapętla się.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 18:32:34
Doskonała odpowiedź prosta i dokładna.
Dodałbym próbkę kodu.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:00
A break
wypowiedzenie powoduje zakończenie wypowiedzenia, do którego ma zastosowanie (switch
, for
, do
, lub while
).
Instrukcja continue
jest używana do zakończenia iteracji pętli bieżącej i powrotu sterowania do instrukcji pętli.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-20 18:03:28
continue
pomija aktualnie wykonywaną pętlę i przechodzi do następnej pętli break
wyprowadza z pętlii wykonuje następną instrukcję Po pętli.
Nauczyłem się różnicy za pomocą poniższego kodu. Sprawdź różne wyjścia.Mam nadzieję, że to pomoże.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 10:00:08
Rozważ co następuje:
int n;
for(n = 0; n < 10; ++n) {
break;
}
System.out.println(n);
Break powoduje zakończenie pętli, a wartość n wynosi 0.
int n;
for(n = 0; n < 10; ++n) {
continue;
}
System.out.println(n);
Continue powoduje, że licznik programu powróci do pierwszej linii pętli (warunek jest sprawdzany i wartość n jest przyrostem), a końcowa wartość N wynosi 10.
Należy również zauważyć, że break kończy wykonywanie pętli, w której się znajduje:
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);
Wyświetli coś na efekt
0
0
0
0
0
5
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-21 01:27:38
Instrukcja break
wychodzi z pętli (Następna instrukcja do wykonania jest pierwszą po nawiasie zamykającym), podczas gdy continue
rozpoczyna pętlę przy następnej iteracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-20 18:02:46
Instrukcja Break
Czasami konieczne jest wyjście z pętli zanim pętla zakończy pełną iterację wszystkich wartości kroku. Na przykład, zapętlenie listy liczb, aż znajdziesz liczbę, która spełnia określony warunek. Lub zapętlenie strumienia znaków z pliku do momentu odczytania określonego znaku.
W poniższym przykładzie używamy prostej pętli for do wypisywania wartości od 0 do 9:
for(int i=0; i<10; i++) {
System.out.println(i);
}
Wyjście:
0
1
2
3
4
5
6
7
8
9
Teraz jeśli dodamy instrukcję break when I= = 4, nasz kod wyrwie się z pętli, Gdy i równa się 4. Za pomocą instrukcji break można wyłączyć pętle for, while I do-while. Instrukcja break zostanie wyłączona tylko z pętli bieżącej. Aby wyrwać pętlę zewnętrzną z zagnieżdżonej pętli wewnętrznej, należy użyć etykiet z instrukcją break.
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==4) {
break;
}
}
Wyjście:
0
1
2
3
4
Kontynuuj Oświadczenie
Instrukcja Java continue pomija bieżącą iterację pętli i przechodzi bezpośrednio do następnej iteracji. Po wywołaniu instrukcji continue w pętli for, wykonanie pętli wykona wartość step i obliczy warunek logiczny przed kontynuacją następnej iteracji. W poniższym przykładzie drukujemy wszystkie wartości od 0 do 9 W pętli, ale pomijamy drukowanie 4.
for(int i=0; i<10; i++) {
if(i==4) {
continue;
}
System.out.println(i);
}
Wyjście:
0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9
Pętla Label-Break Statement Można używać etykiet wewnątrz zagnieżdżonych pętli , określając, gdzie ma być kontynuowane wykonywanie po wyłamaniu się z pętli wewnętrznej. Zwykle instrukcja break wyłamuje się tylko z najbardziej wewnętrznej pętli, więc jeśli chcesz wyłamać się z zewnętrznej pętli, możesz użyć etykiet, aby to osiągnąć, zasadniczo robiąc coś podobnego do instrukcji goto.
Poniższy przykład wykorzystuje 3 pętle, wszystkie zagnieżdżone wewnątrz siebie. Ponieważ nie ma możliwości całkowicie wyłam z zewnętrznej pętli most od wewnątrz wewnętrznej pętli most, możemy użyć etykiety "outer1", aby to osiągnąć i określić Etykietę obok instrukcji 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;
}
}
}
}
Wyjście:
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]
Zwróć uwagę, jak wyświetla się ostatnia linia "0[0]" czyli gdzie j = = 3 i tam nazwaliśmy "break outer1;" aby wyrwać się z zewnętrznej pętli most.
Loop Labels-Continue Statement
Możesz także użyć etykiet ze słowem kluczowym continue do Kontynuuj zapętlanie z określonego punktu. Użycie poprzedniego przykładu i zmiana jednej linii w celu określenia continue outer1;
zamiast break outer1;
spowoduje, że pętla będzie kontynuowała zapętlanie z etykiety outer1
zamiast wyłamywania się z pętli. Zauważ, że po każdym wywołaniu continue outer1;
kod jest kontynuowany z zewnętrznej pętli po zwiększeniu indeksu pętli i o 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]
Source: Loops in Java-Ultimate Guide
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 14:10:12
Instrukcja break
istnieje obecna struktura sterowania pętlą i przeskakuje za nią, podczas gdy continue
również wychodzi, ale wraca do stanu pętli.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-20 18:04:21
Aby zapobiec wykonaniu czegokolwiek, jeśli warunek jest spełniony, należy użyć continue, a aby wydostać się z pętli, jeśli warunek jest spełniony, należy użyć break.
Na przykład w poniższym kodzie.
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
Powyższy kod wyświetli wynik : 0 1 2 4
Teraz rozważ ten kod
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println(i);
}
Ten kod wydrukuje 0 1 2
To podstawowa różnica między kontynuacją a przerwą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 10:42:01
Oto semantyka break:
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:;
Oto semantyka continue:
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:;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-20 18:10:55
Po pierwsze, myślę, że powinieneś wiedzieć, że istnieją dwa rodzaje break I continue w Javie, które są oznaczone jako break, unlabeled break, unlabeled continue i unlabeled continue.Teraz powiem o różnicy między nimi.
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");
}
}
Nieoznakowana instrukcja break kończy najbardziej wewnętrzny przełącznik ,for, while, 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.
}
}
}
Znakowany break kończy zewnętrzną instrukcję.jeśli javac i java to demo, otrzymasz:
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.");
}
Unlabeled continue Instrukcja pomija bieżącą iterację instrukcji 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
}
}
}
Instrukcja continue pomija bieżącą iterację zewnętrznej pętli oznaczonej podaną etykietą, jeśli javac i java Demo, otrzymasz:
0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3
Jeśli masz jakieś pytanie, możesz zobaczyć Tutorial Java tego: wpisz opis linku tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-09 14:15:37
Prosty Przykład:
break
opuszcza pętlę.
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
break;
}
m++;
}
System.out.printl("m:"+m); // m:2
continue
powróci do pętli startowej.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 18:34:01
Mówiąc najprościej: break zakończy bieżącą pętlę i kontynuuje wykonywanie w pierwszej linii po zakończeniu pętli. Kontynuuj skoki z powrotem do stanu pętli i uruchamia pętlę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-20 18:02:53
for (int i = 1; i <= 3; i++) {
if (i == 2) {
continue;
}
System.out.print("[i:" + i + "]");
Wypróbuj ten kod w netbeans zrozumiesz różnice między break I continue
for (int i = 1; i <= 3; i++) {
if (i == 2) {
break;
}
System.out.print("[i:" + i + "]");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-01 16:21:39
Prosty program do zrozumienia różnicy między kontynuacją a przerwą
Kiedy continue
jest używany
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
Kiedy break
jest używany
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-04 18:34:52
Kontynuuj Statment zatrzymaj itrację i rozpocznij następną ittrację 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 + "]");
}
And Break Statment zatrzymaj pętlę lub wyjdź z pętli
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-13 00:50:13
Więc jesteś wewnątrz pętli For lub while. Użycie break; spowoduje, że będziesz poza pętlą. To się skończy. Kontynuuj; powie mu, aby uruchomił następną iterację.
Nie ma sensu używać polecenia continue w if, ale break; jest przydatne. W switch...case, Zawsze używaj break; aby zakończyć przypadek, więc nie wykonuje innego przypadku.