"Merhaba, Amigo!

"Merhaba Ellie."

"Zaten döngüler üzerinde çalıştınız ve bu harika."

"Katılıyorum! Artık onlarsız nasıl yaşayacağımı kesinlikle bilmiyorum."

"Bazen onlarsız da yapabilirsin... Ama daha çok onlara ihtiyacın olacak. Bugün, bir döngüden programın ilerisinde çıkman gereken bir durum hakkında konuşacağız."

"Döngüye devam etme koşulunun doğru olmasına rağmen yine de döngüden çıkmanız gerektiğini mi kastediyorsunuz?"

"Kesinlikle! Bazen zaten bir programcıymışsınız gibi konuşuyorsunuz. Her neyse, bir döngüden planlanandan önce çıkmak için break deyimini kullanabilirsiniz . Aşağıdaki örneğe bir göz atın:

kod Açıklama
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Siz girene kadar program klavyeden bir satır okuyacaktır "exit".

"Anlıyorum. Program konsoldan satırlar okuyor. Eğer girerseniz "exit", o zaman isExitdeğişken olur true, döngü koşulu olur ve döngü sona erer."!isExitfalse

"Doğru. Java'nın breakbu mantığı basitleştirmenizi sağlayan özel bir ifadesi var. breakBir döngü içinde bir ifade yürütülürse, döngü hemen sona erer. Program, döngüyü takip eden ifadeyi yürütmeye başlar. İfade çok kısadır. :

break;

break" Az önce tartıştığımız örneği yeniden yazmak için ifadeyi şu şekilde kullanabilirsiniz :

kod Açıklama
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Siz girene kadar program klavyeden bir satır okuyacaktır "exit".

"Belki bunu hatırlarım. İşime yarayacağını hissediyorum."

"Ama breakbir döngünün davranışını kontrol etmenize izin veren tek Java ifadesi değil. Java'da da bu continueifade var. Bir döngü içinde bir ifade yürütürseniz continue, döngünün geçerli yinelemesi planlanandan önce sona erer."

"Yineleme derken neyi kastediyorsun?"

"Döngü yinelemesi, döngü gövdesinin bir yürütmesidir. continueİfade, döngünün geçerli yinelemesini kesintiye uğratır, ancak breakifadenin aksine, döngünün kendisini sonlandırmaz. İfade ayrıca kısadır:

continue;

"Öyleyse, continuedöngünün belirli yinelemelerinin yürütülmesini 'atlamak' istiyorsak, ifade bir döngüde kullanılabilir mi?"

break"Kesinlikle. ve arasındaki farkı anladınız mı continue? Tekrar etmeyen 20 basamaktan yedisini bulmanız gerekirse, ne tür bir döngü ve döngü kesme ifadesi kullanırsınız?

"Hmm... Tüm sayıları gözden geçirirdim ve eğer 7'yi bulursam, o zaman bir break."

1" ile 20bölünebilen sayılar dışında, ile arasındaki sayıları görüntülemeniz gerekirse ne olur 7?"

"Eh, döngüden çıkmak istemediğim için muhtemelen burada ihtiyacım var continue. Ama yine de tam olarak anlamıyorum."

"Size bu sorunu nasıl çözeceğinizi göstereyim. Bu kod böyle görünebilir."

kod Açıklama
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Program, 1ile arasındaki sayıları görüntüler 20. Sayı ile bölünebilirse 7(kalan ile bölme işlemi 7) 0 , o zaman sayıyı göstermeyi atlarız.

"Bana neden bu kadar şüpheyle bakıyorsun Ellie? Burada bir püf noktası mı var?"

"Aldanamazsın Amigo! Gerçekten de bu kod düzgün çalışmayacak . İlk 6 haneyi gösterecek ve sonra isonsuza kadar sayının üzerinde takılıp kalacak 7. Ne de olsa, continueifade diğer iki ifadeyi atlıyor: System.out.println(i)ve i++. As sonuç olarak, değerine ulaştığımızda 7, değişken ideğişmeyi durduracak ve sonsuz bir döngüye gireceğiz. Kodu, çok yaygın bir hatayı göstermek için bilerek bu şekilde yazdım."

"Bunu nasıl düzeltiriz?"

"Burada iki seçenek var:"

Seçenek 1:i yürütmeden önce continue, ancak sonra değiştirini % 7

Seçenek 2:i her zaman döngünün başında artırın . Ancak o zaman ibaşlangıç ​​değeri olmalıdır 0.

seçenek 1 seçenek 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"Mükemmel! Bu hatayı yapmamaya çalışacağım."

"Sözünü hatırlayacağım!"