Slingor (bryt och återvänd, fortsätt, etiketter) - 1

"Hej, Amigo!"

"Idag ska jag berätta om några saker som är bekväma när man jobbar med loopar."

"Det första är nyckelordet break . Om du använder det här kommandot i en loops brödtext kommer loopen att avslutas omedelbart när kommandot körs. Här är ett exempel:"

Exempel Produktion:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"Kan break endast användas i en loop?"

"Ja. break-satsen kan bara användas i en loop. När en break-sats exekveras avslutas loopen omedelbart."

"OK. Jag förstår."

"Bra. Nu är det andra jag vill dela med mig av nyckelordet fortsätt. Det kan också bara användas i en loop. När det här kommandot körs börjar en ny iteration av loopen omedelbart. Med andra ord, eventuell återstående kod i slingans kropp hoppas helt enkelt över."

"Här är ett exempel:"

Exempel Produktion:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"Så, när programmet väl når ett fortsätt-kommando i en loop, slutar det att exekvera koden i loopen?"

"Nej. Titta, vi har en loop när vi kör samma kod flera gånger. I exemplet ovan har vi en loop från 0 till 9, dvs slingans kropp kommer att exekveras 10 gånger. Eller hur?"

"Ja."

"En passage genom slingans kropp kallas en iteration. Vår slinga består av 10 iterationer - slingans kropp kommer att utföras tio gånger."

"Ja, det är klart."

" Kommandot fortsätt avslutar den aktuella iterationen i förtid, dvs. eventuell återstående kod i slingan hoppas över och en ny iteration börjar."

"Här är ett annat exempel:"

Exempel
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"I det här exemplet visar vi en strängrepresentation av alla objekt i listan. Men vi hoppar över alla objekt som är null."

"Ok, förstår. Jag kan se hur bekvämt det här är."

"Japp. Jag vill också berätta om etiketter. De används sällan i Java, eftersom de ofta bryter mot skönheten i ett programs logik. Men du kan stöta på dem i koden någon gång. Så jag skulle hellre berätta om dem än har du hört talas om dem på lekplatsen."

"Det var en gång i tiden tillåtet att hoppa från vilken rad som helst till vilken rad som helst i koden. Vi gjorde detta med hjälp av etiketter och goto-satsen. Så här ser det ut:"

Hemsk kod med etiketter
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"I det här exemplet, efter att goto label- kommandot har körts, hoppar programmet till raden markerad label .

"Senare blev alla kloka och bestämde sig för att inte använda goto- satsen. Java stöder inte goto, men goto är ett reserverat ord. Ingen stor sak..."

"Så, ingen goto och inga etiketter i Java?"

"Det finns inget goto-uttalande, men det finns etiketter!"

"Hur kan det vara?"

"I Java kan etiketter användas med kommandona continue och break. De används när du har många kapslade loopar."

"Anta till exempel att du har 5 kapslade slingor och när något villkor är uppfyllt vill du få ut tre av dem, men inte alla. Etiketter är ett elegant sätt att göra detta:"

Exempel
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"I det här exemplet, när break-satsen exekveras, lämnar vi inte loopen med variabeln k, utan från loopen märkt label2 - dvs vi lämnar omedelbart de två looparna med k och j."

"Hur ofta används det?"

"För att vara ärlig, inte ofta, men man vet aldrig. Kanske kommer du att se det någon gång. Det här är syntaxgrunderna - du behöver veta allt det här!"

"OK. Tack, Bilaabo."