جاوا ٽن جمپ آپريٽرن کي سپورٽ ڪري ٿو - آپريٽر استعمال ڪندي
جاوا ۾ آپريٽر
سوئچ بيانن ۽ لوپس ۾ استعمال ٿيڻ کان علاوه ، آپريٽر استعمال ڪندي
ڪڏهن ڪڏهن اهو ڪارائتو آهي ته لوپ جي ايندڙ ورهاڱي کي جلد شروع ڪرڻ. اهو آهي، توهان کي لوپ تي عمل جاري رکڻ جي ضرورت آهي، پر باقي ڪوڊ کي پروسيسنگ کي روڪيو ان جي جسم ۾ هن مخصوص ورهاڱي لاء. حقيقت ۾، هي هڪ آپريٽر
آخري ڪنٽرول بيان آهي
break
, continue
and return
. اهي ڪنٽرول توهان جي پروگرام جي ٻئي حصي ڏانهن منتقل ڪن ٿا. اچو ته هر آپريٽرز تي تفصيل سان غور ڪريو.
آپريٽر استعمال ڪنديbreak
جاوا ۾ آپريٽر break
ٽن ڪيسن ۾ استعمال ٿيندو آهي. پهريون، جيئن توهان اڳ ۾ ئي ڏٺو آهي، اهو بيانن جي تسلسل کي ختم ڪري ٿو بيان شاخن تي switch
. ٻيو، اهو هڪ لوپ مان نڪرڻ لاء استعمال ڪري سگهجي ٿو. ٽيون، اهو غير مشروط جمپ آپريٽر جي "تمدن" فارم جي طور تي استعمال ڪري سگهجي ٿو goto
. هي حصو آخري ٻن ڪيسن جي وضاحت ڪري ٿو. break
لوپ مان نڪرڻ لاءِ استعمال ڪريو استعمال ڪندي break
، توھان لوپ کي فوري طور تي ختم ڪرڻ لاءِ مجبور ڪري سگھو ٿا، مشروط اظهار ۽ لوپ باڊي ۾ باقي رھيل ڪوڊ کي پاس ڪري. جڏهن هڪ بيان break
هڪ لوپ ۾ اچي ٿو، ٻيو هڪ ختم ٿئي ٿو ۽ پروگرام ڪنٽرول بيان ڏانهن منتقل ڪيو ويو آهي جيڪو ان جي پٺيان آهي. سادو مثال:
// Использование 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
استعمال ڪري سگھجي ٿو جاوا جي ڪنھن به لوپ سان، بشمول ارادي طور تي لامحدود لوپ. مثال طور، هيٺ ڏنل آهي پوئين پروگرام هڪ لوپ استعمال ڪندي ڪوڊ ڪيو ويو آهي 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("Цикл завершен.");
}
}
جڏهن nested loops جي هڪ سيٽ اندر استعمال ڪيو ويندو، بيان 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
. تنهن هوندي به، محتاط ٿي. انھن مان گھڻا توھان جي ڪوڊ کي تباھ ڪن ٿا. ٻيو، جو break
، جيڪو - آپريٽر کي ختم ڪري ٿو switch
، صرف ڏنل switch
- آپريٽر کي متاثر ڪري ٿو (۽ نه اهي لوپ جيڪي ان ۾ شامل آهن). تبصرو: Break
لوپ ختم ڪرڻ جي عام طريقي جي طور تي ٺهيل نه هئي. هي مقصد لوپ هيڊر مشروط اظهار جي طرفان ڪم ڪيو ويندو آهي. آپريٽر break
کي صرف لوپ ٽوڙڻ لاءِ استعمال ڪيو وڃي ٿو جڏهن ڪجهه خاص حالتون پيدا ٿين ٿيون.
break
فارم جي طور تي استعمال ڪريوgoto
سوئچ بيانن ۽ لوپس ۾ استعمال ٿيڻ کان علاوه ، break
اهو پڻ اڪيلو استعمال ڪري سگهجي ٿو "تمدن" فارم جي طور تي goto
. جاوا آپريٽر تي مشتمل نه آهي goto
ڇاڪاڻ ته اهو شاخ کي هڪ خودمختيار ۽ غير منظم طريقي سان انجام ڏئي ٿو. ڪوڊ جيڪو استعمال ڪري ٿو. شدت سان goto
عام طور تي سمجھڻ ۽ برقرار رکڻ ڏکيو آھي. اهو پڻ ڪجهه مرتب ڪندڙ اصلاحن کي ختم ڪري ٿو. تنهن هوندي به، پروگرام ۾ ڪيترائي هنڌ آهن جتي goto
ڪنٽرول وهڪري هڪ قيمتي ۽ جائز تعمير آهي. مثال طور، goto
اھو ڪارائتو ٿي سگھي ٿو جڏھن توھان ٽوڙي رھيا آھيو لوپ جي ھڪڙي گھيرو ٿيل سيٽ مان. اهڙين حالتن کي سنڀالڻ لاءِ، جاوا وضاحت ڪري ٿو آپريٽر جو وڌايل فارم break
. ان کي استعمال ڪندي، توهان ڪوڊ جي هڪ يا وڌيڪ بلاڪ کان ٻاهر نڪري سگهو ٿا. انهن بلاڪن کي لوپ يا بيان جو حصو ٿيڻ جي ضرورت ناهي switch
. هي ڪنهن به بلاڪ ٿي سگهي ٿو. اڳيون، توهان اندازو لڳائي سگهو ٿا ته ڪٿي عملدرآمد جاري رهندو ڇو ته هي فارم break
نشان سان ڪم ڪري ٿو ۽ فائدا مهيا ڪري ٿو goto
، ان جي مسئلن کي نظرانداز ڪندي. هڪ break
ليبل ٿيل بيان هيٺ ڏنل عام فارم آهي: break label;
هتي label
هڪ ليبل جو نالو آهي جيڪو ڪوڊ جي ڪجهه بلاڪ کي سڃاڻي ٿو. جڏهن هن فارم تي break
عمل ڪيو ويندو آهي، ڪنٽرول ڪوڊ جي نالي واري بلاڪ مان منتقل ڪيو ويندو آهي (جنهن جو ليبل بيان ۾ بيان ڪيو ويو آهي break
) انهي بلاڪ جي پٺيان بيان ڏانهن. ڪوڊ جي نشان لڳل بلاڪ ۾ لازمي طور تي ھي بيان شامل ھوندو break
، پر اھو ضروري ناھي ته ھي شموليت سڌي ھجي (يعني break
اھو سڌو سنئون بلاڪ ۾ پنھنجي ليبل سان شامل نه ٿي سگھي، پر ان جي اندر اندر رکيل بلاڪ ۾، ممڪن طور تي پڻ نشان ھجي) . ان جو مطلب اهو آهي ته توهان استعمال ڪري سگهو ٿا نشان لڳل آپريٽر کي break
nested بلاڪ جي هڪ سيٽ کان بچڻ لاء. پر توهان ڪوڊ جو هڪ بلاڪ استعمال نٿا ڪري سگهو break
جنهن ۾ شامل نه آهي break
. بلاڪ کي نالو ڏيڻ لاءِ، بلاڪ جي شروعات ۾ ھڪ ليبل رکو (افتتاح گھڙيل ڪنگڻ کان اڳ). هڪ ليبل ڪو به صحيح جاوا سڃاڻپ ڪندڙ آهي جنهن جي پٺيان ڪولن هوندو آهي. بلاڪ کي ليبل ڪرڻ کان پوء، ان جو ليبل استعمال ڪري سگھجي ٿو آپريٽر کي دليل طور 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
آهي nested loops کان بچڻ لاء. مثال طور، هيٺ ڏنل پروگرام ۾ ٻاهرئين لوپ صرف هڪ ڀيرو عمل ڪيو ويندو آهي:
// Использование 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
-جمپ ڪنھن به ليبل ڏانھن جيڪو انڪولنگ بلاڪ لاءِ بيان نه ڪيو ويو آھي. مثال طور، هيٺ ڏنل پروگرام غلط آهي ۽ مرتب نه ٿيندو:
// Эта программа содержит ошибку.
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
ڪڏهن ڪڏهن اهو ڪارائتو آهي ته لوپ جي ايندڙ ورهاڱي کي جلد شروع ڪرڻ. اهو آهي، توهان کي لوپ تي عمل جاري رکڻ جي ضرورت آهي، پر باقي ڪوڊ کي پروسيسنگ کي روڪيو ان جي جسم ۾ هن مخصوص ورهاڱي لاء. حقيقت ۾، هي هڪ 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("");
}
}
}
هي ڪوڊ استعمال ڪري ٿو آپريشن %
(ماڊولو) چيڪ ڪرڻ لاءِ ته ڇا ڪجھ 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
. هن جو هڪ سبب اهو آهي ته جاوا لوپنگ بيانن جو هڪ امير سيٽ مهيا ڪري ٿو جيڪا اڪثر ايپليڪيشنن کي مناسب آهي. جڏهن ته، انهن خاص حالتن لاءِ جنهن ۾ ضروري آهي ته اُن کي ختم ڪرڻ جي شروعات ۾، بيان 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
رن ٽائم تي جاوا سسٽم ڏانهن موٽندو آهي، ڇاڪاڻ ته اهو سسٽم آهي جيڪو سڏيندو آهي main()
. هن پروگرام مان نڪرڻ:
Перед оператором return.
توهان محسوس ڪري سگهون ٿا ته حتمي بيان تي println()
عمل نه ڪيو ويو آهي. عمل جي وقت تي، return
ڪنٽرول واپس ڪالنگ پروگرام ڏانهن منتقل ڪيو ويو آهي. هڪ حتمي نوٽ. پوئين پروگرام ۾، if
(t) آپريٽر ضروري آهي. ان جي بغير، جاوا ڪمپلر هڪ "ناقابل رسائي ڪوڊ" غلطي اڇلائي ڇڏيندو، ڇاڪاڻ ته اهو ڄاڻي ٿو ته آخري بيان println()
ڪڏهن به عمل نه ڪيو ويندو. ھن نقص کي روڪڻ لاءِ، (t) آپريٽر استعمال ڪيو ويندو آھي if
؛ اھو ھن مظاھري جي خاطر گڏائيندڙ کي چاليندو آھي. اصل ماخذ سان ڳنڍيو: منتقلي آپريٽرز
GO TO FULL VERSION