Java се оператори ҷаҳишро дастгирӣ мекунад - Истифодаи оператор
Оператор
Илова ба истифодаи он дар изҳорот ва ҳалқаҳои коммутатсионӣ , Истифодаи оператор
Баъзан барвақт оғоз кардани такрори навбатии ҳалқа муфид аст. Яъне, ба шумо лозим аст, ки иҷрои ҳалқаро идома диҳед, аммо коркарди боқимондаи codeро дар бадани он барои ин такрори мушаххас қатъ кунед. Дар асл, ин Оператор
Изҳороти охирини назорат аст
break
, continue
ва return
. Онҳо назоратро ба қисми дигари барномаи шумо интиқол медиҳанд. Биёед ҳар як операторро ба таври муфассал баррасӣ кунем.
Истифодаи операторbreak
Оператор break
дар Java дар се ҳолат истифода мешавад. Аввалан, тавре ки шумо аллакай дидед, он пайдарпайии изҳоротро дар шохаҳои изҳорот ба итмом мерасонад switch
. Дуюм, он метавонад барои шикастани ҳалқа истифода шавад. Сеюм, он метавонад ҳамчун шакли "тамаддунӣ" -и оператори ҷаҳиши бешартона истифода шавад goto
. Ин бахш ду ҳолати охирро шарҳ медиҳад. break
Барои баромадан аз давра истифода баред break
. Бо истифода аз - шумо метавонед давраро маҷбур кунед, ки ифодаи шартӣ ва ҳама рамзи боқимондаро дар бадани давр канорагирӣ карда, фавран қатъ шавад. Вақте ки изҳорот break
дар дохor давра дучор мешавад, дуюмаш ба охир мерасад ва идоракунии барнома ба изҳороти баъд аз он мегузарад. Мисоли оддӣ:
// Использование break для выхода из цикла.
public class BreakLoop {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
if (i == 4) {
break; // завершить цикл, если i = 4
}
System.out.println("i: " + i);
}
System.out.println("Цикл завершен.");
}
}
Ин барнома натиҷаи зеринро тавлид мекунад:
i: 0
i: 1
i: 2
i: 3
Цикл завершен.
Гарчанде ки ҳалқа for
дар ин ҷо барои иҷро кардани изҳороти худ аз 0 то 99 маротиба тарҳрезӣ шудааст, оператор break
боиси он мегардад, ки ҳангоми i 4 буданаш онро барвақт қатъ мекунад. Оператор break
метавонад бо ҳама гуна ҳалқаҳои Java, аз ҷумла ҳалқаҳои беохир истифода шавад. Масалан, дар зер барномаи қаблӣ бо истифода аз як ҳалқа рамзгузорӣ шудааст while
. Натиҷаи ин барнома ҳамон тавре ки пешгузаштаи он аст.
// Использование break для выхода из while-цикла.
public class BreakLoop2 {
public static void main(String[] args) {
int i = 0;
while (i < 100) {
if (i == 4) {
break; // закончить цикл, если i = 4
}
System.out.println("i: " + i);
i++;
}
System.out.println("Цикл завершен.");
}
}
Вақте ки дар доираи маҷмӯи ҳалқаҳои лона истифода мешавад, изҳорот break
танҳо аз ҳалқаи дарунтарин мебарояд. Барои намуна:
// Использование break во вложенных циклах.
public class BreakLoop3 {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
for (int j = 0; j < 10; j++) {
if (j == 4) {
break; // закончить цикл, если j = 4
}
System.out.print(j + " ");
}
System.out.println();
}
System.out.println("Цикл завершен.");
}
}
Ин барнома натиҷаи зеринро тавлид мекунад:
Итерация 0: 0 1 2 3
Итерация 1: 0 1 2 3
Итерация 2: 0 1 2 3
Цикл завершен.
Тавре ки шумо мебинед, изҳорот break
дар ҳалқаи дохилӣ танҳо он ҳалқаро қатъ мекунад. Доираи берунӣ таъсир намерасонад. Биёед ду шарҳи дигарро дар бораи break
. Аввалан, дар як ҳалқа изҳороти сершумор пайдо шуда метавонанд break
. Бо вуҷуди ин, эҳтиёт бошед. Бисёре аз онҳо одатан codeи шуморо вайрон мекунанд. Дуюм, break
, ки - операторро қатъ мекунад switch
, танҳо ба switch
оператори додашуда таъсир мерасонад (на ба ҳалқаҳое, ки онро дар бар мегиранд). Шарҳ: Break
ҳамчун воситаи муқаррарии қатъ кардани ҳалқа тарҳрезӣ нашудааст. Ба ин мақсад ифодаи шартии сарлавҳаи давр хизмат мерасонад. Оператор break
бояд танҳо барои шикастани ҳалқа ҳангоми ба миён омадани баъзе ҳолатҳои махсус истифода шавад.
break
Ҳамчун форма истифода баредgoto
Илова ба истифодаи он дар изҳорот ва ҳалқаҳои коммутатсионӣ , break
он метавонад танҳо ҳамчун шакли "тамаддунӣ" -и goto
. Java операторро дар бар намегирад goto
, зеро он гузаришро ба таври худсарона ва сохторнашуда иҷро мекунад. Рамзе, ки .-ро пуршиддат истифода мебарад, goto
одатан фаҳмидан ва нигоҳдорӣ душвор аст. Он инчунин баъзе оптимизатсияи компиляторро бекор мекунад. Бо вуҷуди ин, дар барнома якчанд ҷойҳо мавҷуданд, ки goto
ҷараёни назорат сохтори арзишманд ва қонунист. Масалан, goto
он метавонад муфид бошад, вақте ки шумо аз маҷмӯи ҳалқаҳои амиқ ҷойгиршуда берун мешавед. Барои ҳалли чунин ҳолатҳо, Java шакли васеъи операторро муайян мекунад break
. Бо истифода аз он, шумо метавонед як ё якчанд блокҳои codeро тарк кунед. Ин блокҳо набояд қисми ҳалқа ё изҳорот бошанд switch
. Ин метавонад ҳама гуна блок бошад. Баъдан, шумо метавонед аниқ муайян кунед, ки иҷрокунӣ дар куҷо идома хоҳад ёфт, зеро ин шакл break
бо тамға кор мекунад ва бартариҳои -ро таъмин мекунад goto
ва мушкилоти онро паси сар мекунад. Изҳороти break
нишондодашуда шакли умумии зерин дорад: break label;
Дар ин ҷо label
номи нишонае мавҷуд аст, ки ягон блоки codeро муайян мекунад. Вақте ки ин форма break
иҷро мешавад, идоракунӣ аз блоки codeи номбаршуда (ки дар баёния нишонааш нишон дода шудааст break
) ба оператори пас аз ин блок интиқол дода мешавад. Блоки рамзбандишудаи code ҳатман бояд ин изҳоротро дар бар гирад break
, аммо талаб карда намешавад, ки ин дохилкунӣ мустақим бошад (яъне break
он метавонад мустақиман ба блоки дорои тамғаи худ, балки ба блоки лона гузошташуда дар дохor он дохил карда шавад. ). Ин маънои онро дорад, ки шумо метавонед оператори ишорашударо break
барои гурехтан аз маҷмӯи блокҳои лона истифода баред. Аммо шумо наметавонед break
блоки codeеро, ки дорои break
. Барои номи блок, дар аввали блок нишона гузоред (пеш аз қавси ҷингила кушода). Нишона ҳама гуна идентификатори дурусти Java мебошад, ки пас аз он ду нуқта гузошта мешавад. Пас аз тамғагузорӣ кардани блок, тамғаи он метавонад ҳамчун далел ба оператор истифода шавад break
. Ин боиси он мегардад, ки иҷро аз охири блоки ишорашуда идома ёбад. Масалан, барномаи зерин се блоки лонаро дар бар мегирад, ки ҳар кадоме дорои тамғаи худро доранд. Оператор break
ба пеш ҳаракат мекунад, берун аз охири блоке, ки бо нишона нишон дода шудааст second
, ду операторро гузаред println()
.
// Использование break How цивorзованной формы goto.
public class Break {
public static void main(String[] args) {
boolean t = true;
first:
{
second:
{
third:
{
System.out.println("Перед оператором break.");
if (t) {
break second; // выход из блока second
}
System.out.println("Данный оператор никогда не выполнится");
}
System.out.println("Данный оператор никогда не выполнится ");
}
System.out.println("Данный оператор размещен после блока second.");
}
}
}
Иҷрои ин барнома натиҷаи зеринро тавлид мекунад:
Перед оператором break.
Данный оператор размещен после блока second.
Яке аз истифодаҳои маъмултарини оператори нишондодашуда break
фирор аз ҳалқаҳои лона аст. Масалан, дар барномаи зерин даври беруна танҳо як маротиба иҷро карда мешавад:
// Использование break для выхода из вложенных циклов.
public class BreakLoop4 {
public static void main(String[] args) {
outer:
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
for (int j = 0; j < 100; j++) {
if (j == 10) {
break outer; // выйти из обоих циклов
}
System.out.print(j + " ");
}
System.out.println("Эта строка никогда не будет выведена");
}
System.out.println("Цикл завершен.");
}
}
Барнома натиҷаи зеринро тавлид мекунад:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Муайян кардан осон аст, ки вақте ки ҳалқаи дохилӣ пеш аз анҷоми ҳалқаи беруна қатъ мешавад, ҳарду ҳалқа ба охир мерасад. Дар хотир доред, ки шумо наметавонед break
-jump ба ягон нишонае, ки барои блоки иҳотакунанда муайян нашудааст, иҷро кунед. Масалан, барномаи зерин беэътибор аст ва тартиб дода намешавад:
// Эта программа содержит ошибку.
public class BreakErr {
public static void main(String[] args) {
one:
for (int i = 0; i < 3; i++) {
System.out.print("Итерация " + i + ": ");
}
for (int j = 0; j < 100; j++) {
if (j == 10) {
break one; //He верно!
}
System.out.print(j + " ");
}
}
}
Азбаски ҳалқаи ишорашуда изҳоротро дар бар намегирад break
, интиқоли назорат ба ин блок имконнопазир аст.
Истифодаи операторcontinue
Баъзан барвақт оғоз кардани такрори навбатии ҳалқа муфид аст. Яъне, ба шумо лозим аст, ки иҷрои ҳалқаро идома диҳед, аммо коркарди боқимондаи codeро дар бадани он барои ин такрори мушаххас қатъ кунед. Дар асл, ин goto
гузариш аз амалиёти навбатии бадан ба охири блоки давр аст. Ин амал аз ҷониби оператор анҷом дода мешавад continue
. Дар давраҳо, while
ва do while
оператори continue
идоракуниро ба таври мустақим ба ифодаи шартие, ки давраро идора мекунад, интиқол медиҳад. Дар давра for
идоракунӣ аввал ба қисми такрории изҳорот for
ва баъд ба ифодаи шартӣ мегузарад. Барои ҳар се ҳалқа, ҳама гуна рамзи фосилавӣ аз байн меравад. Намунаи барномае, ки continue
барои чопи ду рақам дар ҳар як сатр истифода мебарад, дар зер оварда шудааст:
// Демонстрирует continue.
public class Continue {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.print(i + " ");
if (i % 2 == 0) {
continue;
}
System.out.println("");
}
}
}
Ин code амалиётро %
(модуло) истифода мебарад, то ки оё чизе i
ҳамвор бошад. Агар ин тавр бошад, давра бидуни чопи аломати сатри нав идома меёбад. Натиҷаи барнома:
0 1
2 3
4 5
6 7
8 9
Мисли оператори break
, continue
шумо метавонед нишонаеро муайян кунед, ки кадом ҳалқаи фарогирро идома медиҳад. Барномаи намунавӣ, ки continue
барои чопи ҷадвали зарбкунии секунҷа аз 0 то 9 истифода мебарад.
// Использование continue с меткой.
public class ContinueLabel {
public static void main(String[] args) {
outer:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j > i) {
System.out.println();
continue outer;
}
System.out.print(" " + (i * j));
}
}
System.out.println();
}
}
Изҳороти continue
ин мисол даври арзёбиро ба итмом мерасонад j
ва бо такрори навбатии даврае, ки тавассути i
. Натиҷа аз ин барнома:
0
0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81
Он хеле кам муфид аст continue
. Яке аз сабабҳои ин дар он аст, ки Java маҷмӯи ғании изҳороти ҳалкунандаро пешкаш мекунад, ки ба аксари барномаҳо мувофиқанд. Бо вуҷуди ин, барои он ҳолатҳои махсус, ки дар он бояд такрори барвақт қатъ карда шавад, изҳорот continue
роҳи сохтории иҷрои ин вазифаро пешниҳод мекунад.
Операторreturn
Изҳороти охирини назорат аст return
. Он барои баргаштан ба таври возеҳ аз усул истифода мешавад, яъне идоракунии барномаро ба барномаи даъватшаванда бармегардонад. Оператор return
ҳамчун оператори гузариш тасниф карда мешавад. Гарчанде ки муҳокимаи пурраи он бояд то баррасии усулҳо интизор шавад, дар ин ҷо шарҳи мухтасар оварда шудааст return
. Операторро return
метавон дар ҳама ҷо дар усул истифода кард, то ба барномае, ки методро даъват мекунад, баргардад. Изҳорот return
фавран иҷрои усули дар он мавҷудбударо қатъ мекунад. Мисоли зерин инро нишон медиҳад:
// Демонстрирует return.
public class Return {
public static void main(String[] args) {
boolean t = true;
System.out.println("Перед оператором return.");
if (t) {
return; // возврат в вызывающую программу
}
System.out.println("Этот оператор никогда не выполнится.");
}
}
Ин return
дар вақти корӣ ба системаи Java бармегардад, зеро он системаест, ки main()
. Натиҷа аз ин барнома:
Перед оператором return.
Шумо метавонед аҳамият диҳед, ки изҳороти ниҳоӣ println()
иҷро нашудааст. Дар вақти иҷро, return
назорат дубора ба барномаи даъватшаванда интиқол дода мешавад. Як ёддошти ниҳоӣ. Дар барномаи қаблӣ if
оператори (t) лозим аст. Бе он, компилятори Java хатои "рамзи дастнорас" -ро мепартояд, зеро он медонист, ки изҳороти охирин println()
ҳеҷ гоҳ иҷро намешавад. Барои пешгирии ин хато, оператори (t) истифода мешавад if
; он компиляторро ба хотири ин намоиш фиреб медиҳад. Пайванд ба манбаи аслӣ: Операторҳои гузариш
GO TO FULL VERSION