Yanıtlar:
break
bir döngü bırakır, bir continue
sonraki yinelemeye atlar.
Daha fazla ayrıntı ve kod örnekleri için Dallanma Bildirimleri'ne bakın :
break
Break deyiminin iki biçimi vardır: etiketli ve etiketsiz. Etiketlenmemiş formu, switch ifadesinin önceki tartışmasında gördünüz. Ayrıca, for, while veya do-while döngüsünü sonlandırmak için etiketlenmemiş bir mola kullanabilirsiniz [...]
Etiketlenmemiş bir kesme ifadesi en içteki anahtarı, while, do-while ifadesini sonlandırır, ancak etiketli bir break dış ifadeyi sonlandırır.
continue
Continue ifadesi, for, while veya do-while döngüsünün geçerli yinelemesini atlar. Etiketlenmemiş form, en içteki döngü gövdesinin sonuna atlar ve döngüyü denetleyen boole ifadesini değerlendirir. [...]
Etiketli bir devam ifadesi, verilen etiketle işaretlenmiş bir dış halkanın geçerli yinelemesini atlar.
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");
Bu, aşağıdaki çıktıya yol açacaktır:
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
Bir bloğu, sadece for-loop'u değil, etiketleyebilir ve iç içe geçmiş bir bloktan dış bloğa kırıp devam edebilirsiniz. Bazı durumlarda bu yararlı olabilir, ancak programın mantığını anlamak için aşağıdaki örnekten daha iyi olması dışında, genel olarak bu tür kodlardan kaçınmaya çalışacaksınız:
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));
}
}
}
Çünkü bu mümkün, kullanmanız gerektiği anlamına gelmiyor.
Kodunuzu komik bir şekilde gizlemek istiyorsanız, anlamlı bir ad seçmezsiniz, ancak http: ve kaynak kodundaki bir web adresi gibi yabancı görünen bir yorum ile takip edersiniz:
http://stackoverflow.com/questions/462373
for (int i = 0; i < 4; ++i)
{
if (i == 2)
break http;
Sanırım bu bir Joshua Bloch sınavından. :)
http://stackoverflow.com/questions/462373/
iş yapmakla kalmaz mıydı ?
Break, döngüden tamamen ayrılır ve döngüden sonra ifadeleri yürütür. Devam, geçerli yinelemeden ayrılır ve döngüdeki bir sonraki değerle yürütülür.
Bu Kod Her Şeyi Açıklar:
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");
}
}
Çıktı:
0 1 2 3
0 1 2 3 5 6 7 8 9
Break Bildirimi
Bazen , döngü tüm adım değerleri üzerinde tamamen yineleme yapmadan önce bir döngüden çıkmak gerekir . Örneğin, belirli bir koşulu karşılayan bir sayı bulana kadar bir sayı listesi üzerinde döngü. Veya belirli bir karakter okunana kadar dosyadaki bir karakter akışı üzerinden döngü yapmak.
Aşağıdaki örnekte, 0 ile 9 arasındaki değerleri yazdırmak için basit bir döngü kullanıyoruz:
for(int i=0; i<10; i++) {
System.out.println(i);
}
Çıktı:
0
1
2
3
4
5
6
7
8
9
Şimdi i == 4 olduğunda bir break ifadesi eklersek, i 4'e eşit olduğunda kodumuz döngüden kopar. Döngüler ve do-while döngüleri için döngülerden çıkmak için break deyimini kullanabilirsiniz. Break ifadesi yalnızca geçerli döngüden çıkar. Bir iç döngüden iç içe bir iç döngüden kopmak için, break deyimine sahip etiketler kullanmanız gerekir.
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==4) {
break;
}
}
Çıktı:
0
1
2
3
4
Bildirime Devam Et
Java'nın devam ifadesi bir döngünün geçerli yinelemesini atlar ve doğrudan bir sonraki yinelemeye gider. For deyiminde continue ifadesini çağırdıktan sonra, döngü yürütme adım değerini yürütecek ve sonraki yinelemeye geçmeden önce boole koşulunu değerlendirecektir. Aşağıdaki örnekte, 0 ile 9 arasındaki tüm değerleri bir döngüde yazdırıyoruz, ancak 4'ü yazdırmayı atlıyoruz.
for(int i=0; i<10; i++) {
if(i==4) {
continue;
}
System.out.println(i);
}
Çıktı:
0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9
Döngü Etiketi - Kesme Deyimi İç döngüden çıktıktan sonra yürütmenin nerede devam etmesini istediğinizi belirterek iç içe döngüler içindeki etiketleri kullanabilirsiniz . Normalde, break deyimi yalnızca en içteki döngüden ayrılır, bu nedenle bir dış döngüden çıkmak istediğinizde, bunu gerçekleştirmek için etiketleri kullanabilirsiniz, temel olarak bir goto deyimine benzer bir şey yapabilirsiniz.
Aşağıdaki örnek, hepsi birbirinin içine yerleştirilmiş 3 döngü kullanır. En içteki döngünün içinden en dıştaki döngüden tamamen çıkmanın bir yolu olmadığından, bunu gerçekleştirmek ve break deyiminin yanındaki etiketi belirtmek için “dış1” etiketini kullanabiliriz.
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;
}
}
}
}
Çıktı:
[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]
Görüntülenen son satırın nasıl " 0 [0]" olduğuna dikkat edin , burada j == 3 ve "break external1;" en dıştaki döngüden kurtulmak için.
Döngü Etiketleri - Bildirime Devam Et
Belirli bir noktadan döngü yapmaya devam etmek için sürekli anahtar kelimeyle birlikte etiketleri de kullanabilirsiniz. Önceki örneği almak ve continue outer1;
bunun yerine yalnızca bir satırı belirtmek break outer1;
, döngünün döngüden çıkmak outer1
yerine etiketten dönmeye devam etmesine neden olur . Her seferinde nasıl continue outer1;
çağrıldığına dikkat edin, kod döngü i dizinini 1 arttırdıktan sonra dış döngüden devam eder.
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]
Mükemmel cevap basit ve doğru.
Bir kod örneği eklerdim.
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
yürütme akımı atlar döngü ve taşınır sonraki döngü halbuki break
HAREKETLER OUT bir döngü ve bir sonraki deyimi yürütür sonra döngü. Aşağıdaki kodu kullanarak farkı öğrendim. Farklı çıkışlara göz atın.
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
Aşağıdakileri göz önünde bulundur:
int n;
for(n = 0; n < 10; ++n) {
break;
}
System.out.println(n);
break , döngünün sona ermesine neden olur ve n değeri 0'dır.
int n;
for(n = 0; n < 10; ++n) {
continue;
}
System.out.println(n);
devam , program sayacının döngünün ilk satırına dönmesine neden olur (koşul kontrol edilir ve n değeri artar) ve n'nin son değeri 10'dur.
Ayrıca kırılmanın sadece içinde bulunduğu döngünün yürütülmesini sonlandırdığına dikkat edilmelidir :
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);
Etkisi bir şey çıktı olacak
0
0
0
0
0
5
break
Döngünün dışında beyanı sonları, (yürütülecek bir sonraki deyimi Kapanış ayracı sonra ilk biridir) iken continue
başlar sonraki tekrarda üzerinde döngü.
Basit Örnek:
break
döngü bırakır.
int m = 0;
for(int n = 0; n < 5; ++n){
if(n == 2){
break;
}
m++;
}
System.out.printl("m:"+m); // m:2
continue
başlangıç döngüsüne geri döner.
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
Bir koşulun yerine getirilmesi durumunda herhangi bir şeyin yürütülmesini önlemek için, devam etmeyi ve bir koşul yerine getirilirse döngüden çıkmayı sağlamak için mola kullanılmalıdır.
Örneğin, aşağıda belirtilen kodda.
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println(i);
}
Yukarıdaki kod sonucu yazdıracaktır: 0 1 2 4
HAYIR bu kodu göz önünde bulundurun
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println(i);
}
Bu kod yazdırılacaktır 0 1 2
Devam ve kopmada temel fark budur.
işte ara semantiği:
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:;
İşte devam semantiği:
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:;
}
İlk olarak, Java'da mola, etiketsiz mola, etiketli devam ve etiketsiz devam eden iki tür kırılma ve devam etmeyi bilmeniz gerektiğini düşünüyorum.Şimdi aralarındaki fark hakkında konuşacağım.
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");
}
}
Etiketlenmemiş bir kesme ifadesi, do-while ifadesi için en içteki anahtarı sonlandırır.
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.
}
}
}
Etiketli bir mola dış ifadeyi sonlandırır. Eğer bu demosu javac ve java yaparsanız, şunları elde edersiniz:
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.");
}
Etiketlenmemiş bir devam ifadesi, for, while, do-while ifadesinin geçerli yinelemesini atlar.
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
}
}
}
Etiketli bir devam ifadesi, verilen etikel ile işaretlenmiş bir dış döngünün geçerli yinelemesini atlar, eğer javac ve java demosu yaparsanız, şunları elde edersiniz:
0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3
Herhangi bir sorunuz varsa, bunun Java eğitimini görebilirsiniz: bağlantı açıklamasını buraya girin
Basitçe söylemek gerekirse: break geçerli döngüyü sonlandıracak ve döngü bittikten sonra ilk satırda yürütmeye devam edecektir. Continue, döngü durumuna geri atlar ve döngüyü çalıştırmaya devam eder.
Continue ve break arasındaki farkı anlamak için basit bir program
Ne zaman continue
kullanılır
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
Ne zaman break
kullanılır
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
Devam İfadeyi yinelemeyi durdurun ve sonraki yinelemeyi başlatın Örn:
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 + "]");
}
ve Break Deyimi döngüyü durdurur veya döngüden çıkar
böylece for veya while döngüsünün içindesiniz. Mola kullanma; sizi döngünün dışına çıkaracaktır. Olduğu gibi bitecek. Devam et; bir sonraki yinelemeyi çalıştırmasını söyleyecektir.
İf deyiminde devam etmenin bir anlamı yoktur, ancak break; kullanışlı. Anahtar ... durumda, her zaman ara kullanın; bir vakayı sonlandırmak için başka bir vakayı yürütmez.
if
noktanın bol bu durumda bir döngü içinde olduğunu.