الحلقات في لغة الجافا
الحلقات في لغة الجافا هي عباره عن طريقة تستخدم لتكرار ما بداخلها لعدد المرات المحددة من قبل المبرمج
حلقة for تعتبر من اعم الهياكل البنائية للحلقات في جافا والتي تدعم التكرار الذي يتحكم به عداد أو قيمه متغيره باستمرار بعد كل دوره من التكرار. الصورة التاليه توضح ان الشفرة البرمجيه ستقوم بطباعة الأرقام بشكل تصاعدي من 1 وحتى 10 باستخدام هذه الشفرة
(++for(int i = 0; i<=10;i
تعتبر الخليه الأولى خليه خاصه بالإنشاء حيث يتم إنشاء المتغيرات فيها واعطاء قيم مبدأيه لتلك المتغيرات اما الخليه الثانية فهي تبين الشرط الذي يجب اختباره قبل ان تنفذ الشفرة البرمجيه داخل الحلقة والخليه الثالثة هي التي يتم فيها تحديث القيم للمتغير.
في الحقيقة لغة جافا مشابهه للغة ++C من ناحية انها تقبل ان يتم وضع عمليات حسابيه في الخلايا الثلاث ولكنه قانون غير مكتوب لكونه يفتقد للاحساس السليم والذي ينص على أن الخلايا الثلاث يجب أن تحمل الإنشاء, الشرط والتحديث عوضا عن أي عمليات حسابيه أخرى. بشكل عام جافا لاتضع قيود كثيره على المبرمج فباستطاعته ان يكون التحديث تنازليا عوضا عن كونه تصاعدي في الصورة السابقة.
تنبيه:
احذر عندما تستخدم شرط المساواه مع العداد العشريه في الحلقات كالمثال التالي :
(++for (int I = 0; i!= 10; i
شفره برمجيه كهذه قد تكون مستحيلة التوقف بسبب ان الاعداد التي تكون بعد الفاصلة قد لا تصل نهائيا للرقم المطلوب, فمثلا قد تصل الحلقة عن الرقم 9.999998 ثم وبعد تحديث القيمة تصبح 10.099998 وذلك لانه لا توجد قيمه برمجيه ثنائية Binary معينه لترمز للعدد 0.1 !.
(++for (int i = 1; i <= 10; i
. . .
// لم يعد يعرف هنا i
على وجه الخصوص، إذا قمت بتعريف متغير داخل بيان for لا يمكنك استخدام قيمة هذا المتغير خارج الحلقة لذلك، إذا كنت ترغب في استخدام القيمة النهائية للحلقة خارجها ، تأكد أن يعلن أنه خارج رأس الحلقة.
(++for (i = 1; i <= 10; i
. . .
// لا يزال يعرف هنا i
من ناحية أخرى، يمكنك تحديد المتغيرات بنفس الاسم في منفصلة عن الحلقات:
(++for (i = 1; i <= 10; i
. . .
. . .
(++for (int i = 11; i <= 20; i
//لا بأس بتعريف متغير آخر اسمهi 
. . .
حلقة for هو مجرد اختصار مريح للحلقة while مثلا:
(--for (int i = 10; i > 0; i
ويمكن إعادة كتابتها كما هنا،
(while (i > 0
على سبيل المثال برنامج يحسب فرص الفوز في اليانصيب ، يجب عليك اختيار 6أرقام من الأرقام من 1 إلى 50 حتى تفوز، ثم هناك (50 × 49 × 48 × 47 × 46 × 45)/(1 × 2 × 3 × 4 × 5 × 6) النتائج المحتملة، لذلك فرصتك هي 1 في 15890700. حظا سعيدا!
بشكل عام، إذا اخترت k أرقام من اصل n، فهناك
نتائج ممكنه،وفيما يلي حلقه for التاليه تحسب هذه القيمة
(++for (int i = 1; i <= k; i
حلقة while (في حين) ينفذ البيان "واللتي قد تكون مجموعة من البيانات" في حين (while) ان الجملة الشرطيه المذكورة بين قوسي الحلقة صحيحه الشكل العام لها هو:
حلقة while لن تنفذ ابدا إذا كان الشرط غير صحيح في البدايه.كما هو موضح في الصورة المرفقة.
البرنامج الموجود في الأسفل يحدد كم من الوقت سيستغرق حفظ مبلغ معين من المال لجهود التقاعد اللتي استحقها المستخدم بجداره على افتراض انه يقوم بإيداع نفس المبلغ سنويا وان المال يكسب سعر الفائدة المحددة.في المثال، نحن نقوم بزايدة العداد و تحديث المبلغ المتراكم حاليا وذلك يتم في جسم الحلقه ونستمر على هذا المنوال حتى يتجاوز إجمالي المبلغ المستهدف.
}(while (balance < goal
حلقة while تختبر الجمله الشرطيه عند البدايه "قبل جسم الحلقه". لذلك، قد لا يتم تنفيذ العمليات البرمجية لهذه الحلقة بتاتا. 
إذا كنت ترير تأكيد ان الكتلة البرمجيه ستعمل على الأقل مره واحده، سوف تحتاج إلى نقل الجملة الشرطيه للأسفل.
هذا النوع من الحلقات ينقذ الجملة ( والذي عادة ما بكون مجموعة من الجُمَل ) و بعد ذلك فقط يتم اختبار الشرط . بعد ذلك يكرر الجملة و يختبر الشرط ثانيةً ، و هلم جراً . الشفرة البرمجية التالية 4-3 تحسب الرصيد الجديد في حساب التقاعد الخاص بك ثم يسال إذا كنت على استعداد للتقاعد :
do
// طباعة الرصيد الحالي
// يسأل إذا كان مستعدا لأخذ و استرجاع المدخلسوف يتم تكرار الحلقة طالما اجابة المستخدم"N" ، (انظر الشكل).
هذا البرنامج هو مثال جيد للحلقة المُراد تكرارها مرة واحدة على الأقل ، لأن المستخدم يريد أن يعلم الرصيد قبل ان يقرر إذا كان كافي للتقاعد .
import java.util.*;
Public class Retirement2 {
public static void main(String[] args)
Scanner in = new Scanner (System.in);
System.out.print(“Hou much money will you contribute every year?”);
double payment = in.nextDouble();
System.out.print(“Interest rate in % : ”);
double interestRate = in.nextDouble();
double balance = 0;
int year = 0;
String input;
// سيتم تحديث الرصيد طالما المستخدم غير مستعد لاسترجاعه
do
//add this year's payment and interest
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
year++;
//طباعة الرصيد الحالي
System.out.printf("After year %d, your balance is %.2f%n", year, balance);
// يسال المستخدم هل إذا كان مستعدا لأخد و استرجاع المدخل
System.out.print(“Ready to retire? (Y/N)”);
input = in.next();
while(input.equals('N')));