آموزش حلقه For در جاوا
حلقه For در جاوا برای تکرار بلوک کد با تعداد مشخص استفاده میشود. دارای مقداردهی، شرط و بهروزرسانی است. مناسب پیمایش آرایه.
07 اردیبهشت 1405
لینک کوتاه
حلقه for در جاوا چیست؟
در برنامهنویسی جاوا، یکی از رایجترین و قدرتمندترین ساختارهای کنترلی، حلقه for است.از حلقه for زمانی استفاده میشود که میدانیم چند بار باید یک بلوک کد تکرار شود.
این حلقه به خصوص برای پیمایش آرایهها، مجموعهها، و انجام عملیات تکراری با شمارنده بسیار مناسب است.
ساختار کلی حلقه for در جاوا به صورت زیر است:
for (initialization; condition; update) {
// بدنه حلقه - کدی که تکرار میشود
}
- initialization: متغیر شمارنده (معمولاً int i = 0) یک بار در ابتدا اجرا میشود.
- condition: یک عبارت شرطی از نوع boolean که قبل از هر بار اجرای بدنه بررسی میشود. اگر true باشد، بدنه اجرا میشود و اگر false باشد، حلقه پایان مییابد.
- update: بعد از اجرای بدنه حلقه اجرا میشود و معمولاً شمارنده را افزایش یا کاهش میدهد.

آموزش حلقه for در جاوا (مرحله به مرحله)
۱.۱ سادهترین مثال حلقه for
بیایید با یک مثال ساده شروع کنیم که اعداد ۱ تا ۵ را چاپ کند:public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println("عدد: " + i);
}
}
}
خروجی:
عدد: 1
عدد: 2
عدد: 3
عدد: 4
عدد: 5
توضیح:
- int i = 1 → شمارنده از ۱ شروع میشود.
- i <= 5 → تا زمانی که i کوچکتر یا مساوی ۵ باشد، حلقه ادامه دارد.
- ++i → بعد از هر بار اجرا، مقدار i یکی افزایش مییابد.
۱.۲ حلقه for نزولی (کاهشی)
گاهی لازم است از یک عدد بزرگ به سمت کوچک حرکت کنیم:for (int i = 10; i > 0; i--) {
System.out.println("شمارش معکوس: " + i);
}
این حلقه اعداد ۱۰ تا ۱ را چاپ میکند.۱.۳ حلقه for با گام دو (step 2)
مثلاً چاپ اعداد زوج بین ۱ تا ۱۰:for (int i = 2; i <= 10; i += 2) {
System.out.println("عدد زوج: " + i);
}
خروجی:
۲، ۴، ۶، ۸، ۱۰
مثالهای پیشرفتهتر از حلقه for در جاوا
۲.۱ پیمایش آرایه با حلقه for
آرایه یکی از رایجترین جاهایی است که از حلقه for استفاده میشود:int[] numbers = {10, 20, 30, 40, 50};
for (int i = 0; i < numbers.length; i++) {
System.out.println("عنصر " + i + ": " + numbers[i]);
}
خروجی:
عنصر 0: 10
عنصر 1: 20
عنصر 2: 30
عنصر 3: 40
عنصر 4: 50
۲.۲ جمع اعداد یک آرایه با حلقه for
int[] scores = {15, 22, 38, 44, 57};
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum = sum + scores[i];
}
System.out.println("مجموع اعداد: " + sum);
خروجی:
مجموع اعداد: 176
۲.۳ حلقه for تو در تو (Nested For Loop)
برای کار با ماتریسها یا ساختارهای دو بعدی:for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
System.out.print(i * j + "\t");
}
System.out.println();
}
خروجی:
1 2 3
2 4 6
3 6 9
🚀 از صفر تا قهرمان جاوا، فقط با یک دوره!
به دنبال یه فرصت طلایی برای شروع برنامهنویسی میگردی؟
دوره آموزشی جاوا ما، همون چیزیه که نیاز داری!✨ چرا این دوره رو انتخاب میکنی؟
🎯 از مبتدی تا حرفهای
بدون پیشزمینه شروع میکنی و به یه برنامهنویس جاوا تبدیل میشی که بازار کار منتظرته!🛠 پروژهمحور و عملی
با انجام پروژههای واقعی، کدنویسی رو یاد میگیری، نه فقط تئوری!👨🏫 پشتیبانی همیشگی
هرجا گیر کنی، تیم پشتیبانی کنارته تا مشکلت حل بشه.🔓 دسترسی مادامالعمر
هر وقت خواستی به محتوا دسترسی داری، برای همیشه!
حلقه for هر کدام (for-each) در جاوا
جاوا یک نسخه سادهتر از حلقه for دارد که مخصوص پیمایش آرایهها و مجموعههاست بدون نیاز به اندیس:int[] numbers = {5, 10, 15, 20};
for (int num : numbers) {
System.out.println(num);
}
✅ مزیت: خوانایی بالا، بدون خطای خارج از محدوده
❌ محدودیت: نمیتوان اندیس عنصر را مستقیم داشت و نمیتوان مقدار عنصر را تغییر داد.
برای تغییر مقادیر آرایه باید از حلقه for معمولی با اندیس استفاده کرد.
حلقه for بینهایت (Infinite Loop) در جاوا
اگر شرط همیشه true باشد، حلقه هرگز متوقف نمیشود:for (;;) {
System.out.println("این حلقه بینهایت است");
}
برای خروج از چنین حلقهای باید از break استفاده کرد.
حلقه for با چند متغیر
در بخش مقداردهی اولیه و بهروزرسانی میتوان چند متغیر داشت:for (int i = 0, j = 10; i < j; i++, j--) {
System.out.println("i = " + i + " , j = " + j);
}
کاربرد: وقتی دو شمارنده همزمان از دو طرف به هم نزدیک میشوند.
استفاده از break و continue در حلقه for
۶.۱ دستور break
خروج زودتر از حلقه:for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // حلقه در i=5 متوقف میشود
}
System.out.println(i);
}
خروجی:
۱، ۲، ۳، ۴
۶.۲ دستور continue
پرش از یک بار تکرار خاص:for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // اعداد زوج چاپ نمیشوند
}
System.out.println(i);
}
خروجی:
۱، ۳، ۵، ۷، ۹
حلقه for با شرط مرکب
میتوان شرط حلقه را ترکیب کرد:for (int i = 1; i <= 10 && i != 7; i++) {
System.out.println(i);
}
این حلقه تا ۶ چاپ میکند و در ۷ متوقف میشود.
کاربردهای واقعی حلقه for در پروژههای جاوا
۸.۱ جستجوی یک مقدار در آرایه
int[] data = {4, 7, 2, 9, 1};
int target = 9;
boolean found = false;
for (int i = 0; i < data.length; i++) {
if (data[i] == target) {
found = true;
System.out.println("مقدار " + target + " در اندیس " + i + " پیدا شد");
break;
}
}
if (!found) {
System.out.println("مقدار مورد نظر یافت نشد");
}
۸.۲ ساخت جدول ضرب با حلقه for تو در تو
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
System.out.printf("%4d", i * j);
}
System.out.println();
}
۸.۳ محاسبه فاکتوریل
int n = 5;
int factorial = 1;
for (int i = 1; i <= n; i++) {
factorial *= i;
}
System.out.println("فاکتوریل " + n + " برابر است با: " + factorial);
خروجی:
فاکتوریل 5 برابر است با: 120
اشتباهات رایج در حلقه for جاوا
۹.۱ استفاده از semicolon اضافی
for (int i = 0; i < 5; i++); {
System.out.println("این کد فقط یک بار اجرا میشود");
}
نقطهویرگول بلافاصله بعد از for باعث میشود بدنه حلقه خالی باشد و کد داخل {} فقط یک بار اجرا شود.
۹.۲ شرط نادرست
for (int i = 0; i < 10; i--) // حلقه بینهایت
۹.۳ عدم تغییر متغیر شمارنده
java
for (int i = 0; i < 10; ) {
System.out.println(i);
// فراموش شده: i++
}
این حلقه بینهایت خواهد بود.
حلقه for در جاوا ۸ و بالاتر (Stream API)
از جاوا ۸ به بعد میتوان از IntStream برای شبیهسازی حلقه for با رویکرد تابعی استفاده کرد:IntStream.rangeClosed(1, 5).forEach(i -> System.out.println(i));
این روش خواناتر و مناسب برای پردازشهای موازی است.
نتیجهگیری
حلقه for در جاوا یکی از پایههای اساسی برنامهنویسی رویهای و شیءگرا محسوب میشود.تسلط بر حلقه for به شما امکان میدهد کدهای تمیزتر، سریعتر و کمخطاتر بنویسید.
همچنین در مصاحبههای شغلی جاوا، سوالات متعددی بر پایه حلقههای for طراحی میشود.
سوال های کاربری برای حلقه For
-
سوال ۱
من میخواهم اعداد ۱ تا ۱۰۰ را چاپ کنم، اما اعداد بخشپذیر بر ۳ را به جای عدد، عبارت "سه" چاپ کند.
چطور با حلقه for این کار را انجام دهم؟
پاسخ
شما باید از یک حلقه for از ۱ تا ۱۰۰ استفاده کنید و داخل بدنه، با استفاده از عملگر باقیمانده (%) بررسی کنید که آیا عدد بر ۳ بخشپذیر است یا نه.
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
System.out.println("سه");
} else {
System.out.println(i);
}
}
اگر بخواهید هم اعداد بخشپذیر بر ۳ و هم بر ۵ را مدیریت کنید، میتوانید از else if استفاده کنید.
-
سوال ۲
من یک آرایه از اعداد دارم و میخواهم بزرگترین عدد را پیدا کنم. چطور با حلقه for این کار را انجام دهم؟
پاسخ
فرض کنید آرایه numbers را دارید. یک متغیر به نام max ایجاد کنید و آن را برابر با اولین عنصر آرایه قرار دهید.
سپس با یک حلقه for از اندیس ۱ تا آخر آرایه، هر عنصر را با max مقایسه کنید. اگر عنصر بزرگتر بود، max را بهروز کنید.
int[] numbers = {23, 45, 12, 78, 34, 89, 5};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("بزرگترین عدد: " + max);
این روش با یک بار پیمایش آرایه، بزرگترین مقدار را پیدا میکند.
-
سوال ۳
من بارها شنیدهم که نباید داخل حلقه for از () System.out.printlnاستفاده کرد، چرا؟ و چه راهکاری وجود دارد؟
پاسخ
دلیل این توصیه، کارایی (Performance) است. چاپ روی کنسول عملی بسیار کندی نسبت به سایر عملیاتهاست.
اگر حلقه شما ۱۰ هزار بار یا بیشتر تکرار شود، استفاده از println داخل حلقه میتواند برنامه را چندین ثانیه کندتر کند.
راهکار این است که خروجی را ابتدا در یک متغیر از نوع StringBuilder جمعآوری کنید و بعد از اتمام حلقه، یک بار کل خروجی را چاپ کنید.
مثال بد (کند)
for (int i = 1; i <= 10000; i++) {
System.out.println(i);
}
مثال خوب (سریع)
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 10000; i++) {
sb.append(i).append("\n");
}
System.out.println(sb.toString());
این روش به خصوص در برنامههای حرفهای و سرورها بسیار مهم است.
-
سوال ۴
چطور میتوانم با حلقه for یک مثلث ستارهای سمت راست چاپ کنم؟ مثلاً برای تعداد ردیف ۵، خروجی به این شکل باشد:
*
**
***
****
*****
پاسخ
این الگو نیاز به دو حلقه تو در تو دارد. حلقه بیرونی برای تعداد ردیفها اجرا میشود.
در هر ردیف، ابتدا تعدادی فاصله چاپ میشود و سپس تعدادی ستاره.
تعداد فاصله در هر ردیف برابر است با (تعداد کل ردیفها منهای شماره ردیف فعلی).
تعداد ستاره برابر است با شماره ردیف فعلی.
int rows = 5;
for (int i = 1; i <= rows; i++) {
// چاپ فاصلهها
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// چاپ ستارهها
for (int k = 1; k <= i; k++) {
System.out.print("*");
}
// رفتن به خط بعدی
System.out.println();
}
اگر بخواهید مثلث سمت چپ باشد، فقط کافی است حلقه چاپ فاصله را حذف کنید.



کاربران ما
شما هم نظرتون با ما دریاره “آموزش حلقه For در جاوا” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید