"

آموزش حلقه Do While در جاوا,ساختار کلی حلقه Do While در جاوا,تفاوت کلیدی Do-While با While در جاوا

آموزش حلقه Do While در جاوا

آموزش حلقه Do While در جاوا ساختاری که بدنه را حداقل یک بار اجرا می‌کند، سپس شرط را بررسی می‌نماید. مناسب برای منوها و ورودی

تیم تحریریه
4
0
10 اردیبهشت 1405
لینک کوتاه

Do While Loop در Java چیست؟

حلقه Do While در جاوا یک ساختار کنترلی از نوع «بعد از آزمون» (post-test) است که ابتدا بدنه حلقه را یک بار اجرا می‌کند و سپس شرط تکرار را بررسی می‌کند.
به عبارت دیگر، حتی اگر شرط ورود به حلقه از ابتدا نادرست باشد، بلوک کد داخل حلقه حداقل یک بار اجرا خواهد شد.
بر خلاف حلقه while که قبل از اجرا شرط را چک می‌کند، do-while اجرای کد را تضمین کرده و آنگاه تصمیم می‌گیرد حلقه را ادامه دهد یا خاتمه دهد.

مثال ساده:



int counter = 1;
do {
    System.out.println("شمارنده مقدار دارد: " + counter);
    counter++;
} while (counter <= 5);

در این مثال، خروجی اعداد ۱ تا ۵ را نشان می‌دهد.
اما اگر counter مقدار اولیه ۱۰ داشت، یک بار عبارت داخل do چاپ می‌شد (شمارنده مقدار دارد: ۱۰) و سپس شرط while (10 <= 5) که نادرست است، حلقه را متوقف می‌کرد.


Do While Loop در Java چیست؟


ساختار کلی حلقه Do While در جاوا


do {
    // بدنه حلقه - حداقل یک بار اجرا می‌شود
} while (شرط);

کلمه کلیدی do شروع حلقه است.

بدنه حلقه داخل آکولاد { } قرار می‌گیرد.

کلمه کلیدی while همراه با شرط در پرانتز ( ) و در نهایت سمی کالن (;) اجباری است.

شرط باید یک عبارت بولی (boolean) باشد که true یا false تولید کند.

تفاوت کلیدی Do-While با While در جاوا

ویژگی    حلقه while  حلقه do-while
زمان بررسی شرط  قبل از اجرای بدنه بعد از اجرای بدنه
حداقل تعداد اجرا صفر بار    یک بار
استفاده مناسب وقتی نمی‌دانیم نیاز به اجرا داریم یا نه   وقتی می‌دانیم حداقل یک بار باید اجرا شود
سمی کالن بعد از while  ندارد (فقط در پرانتز)     دارد (بعد از while)


   
 

مثال مقایسه‌ای:

// while - هیچ چیزی چاپ نمی‌کند
int x = 10;
while (x < 5) {
    System.out.println("این چاپ نمی‌شود");
}

// do-while - یک بار "حداقل یک بار اجرا شد" را چاپ می‌کند
int y = 10;
do {
    System.out.println("حداقل یک بار اجرا شد");
} while (y < 5);







🚀 از صفر تا قهرمان جاوا، فقط با یک دوره!
به دنبال یه فرصت طلایی برای شروع برنامه‌نویسی می‌گردی؟
دوره آموزشی جاوا ما، همون چیزیه که نیاز داری!

✨ چرا این دوره رو انتخاب می‌کنی؟
🎯 از مبتدی تا حرفه‌ای
بدون پیش‌زمینه شروع می‌کنی و به یه برنامه‌نویس جاوا تبدیل می‌شی که بازار کار منتظرته!

🛠 پروژه‌محور و عملی
با انجام پروژه‌های واقعی، کدنویسی رو یاد می‌گیری، نه فقط تئوری!

👨‍🏫 پشتیبانی همیشگی
هرجا گیر کنی، تیم پشتیبانی کنارته تا مشکلت حل بشه.

🔓 دسترسی مادام‌العمر
هر وقت خواستی به محتوا دسترسی داری، برای همیشه!

 

🔥 همین حالا ثبت‌نام کن 







مثال‌های عملی از حلقه Do While در جاوا

مثال ۱: دریافت ورودی معتبر از کاربر

یکی از رایج‌ترین کاربردهای do-while زمانی است که می‌خواهیم تا دریافت مقدار صحیح، از کاربر سوال بپرسیم.

import java.util.Scanner;

public class ValidInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number;
        do {
            System.out.print("لطفاً عددی بین 1 تا 10 وارد کنید: ");
            number = scanner.nextInt();
        } while (number < 1 || number > 10);
        
        System.out.println("عدد معتبر وارد شد: " + number);
        scanner.close();
    }
}

در این کد، کاربر حداقل یک بار عدد می‌دهد و اگر خارج از بازه بود، دوباره سوال می‌شود.

مثال ۲: منوی تکراری در برنامه

برای پیاده‌سازی منوهایی که تا زمانی که کاربر گزینه خروج را نزند، تکرار می‌شوند:

import java.util.Scanner;

public class MenuExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice;
        
        do {
            System.out.println("\n--- منوی اصلی ---");
            System.out.println("1. نمایش پیام خوش آمدید");
            System.out.println("2. نمایش تاریخ جاری");
            System.out.println("3. خروج");
            System.out.print("انتخاب شما: ");
            choice = scanner.nextInt();
            
            switch (choice) {
                case 1:
                    System.out.println("خوش آمدید!");
                    break;
                case 2:
                    System.out.println("تاریخ امروز: " + java.time.LocalDate.now());
                    break;
                case 3:
                    System.out.println("در حال خروج...");
                    break;
                default:
                    System.out.println("گزینه نامعتبر، دوباره تلاش کنید.");
            }
        } while (choice != 3);
        
        scanner.close();
    }
}

مثال ۳: محاسبه مجموع اعداد با شرط پایان

برنامه‌ای که اعداد را از کاربر بگیرد و وقتی صفر وارد کرد، مجموع را چاپ کند:


import java.util.Scanner;

public class SumUntilZero {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number;
        int sum = 0;
        
        do {
            System.out.print("عدد وارد کنید (0 برای پایان): ");
            number = scanner.nextInt();
            sum += number;
        } while (number != 0);
        
        System.out.println("مجموع اعداد وارد شده: " + sum);
        scanner.close();
    }
}

توجه کنید که صفر نیز به مجموع اضافه می‌شود ولی حلقه را متوقف می‌کند.

اشتباهات رایج حلقه Do While در جاوا

۱. فراموش کردن سمی کالن (;)


do {
    // کد
} while (x > 0)   // خطا - سمی کالن جا افتاده

۲. ایجاد حلقه بی‌نهایت (infinite loop)

اگر شرط همیشه true باشد، حلقه بی‌نهایت می‌شود:

int i = 1;
do {
    System.out.println(i);
    // فراموش شده i++
} while (i <= 5);

۳. دقت در متغیرهای شرط

اگر متغیر شرط داخل بدنه مقداردهی نشود، شرط تغییری نمی‌کند.

۴. استفاده از break و continue

break باعث خروج کامل از حلقه می‌شود.

continue اجرای بقیه بدنه را نادیده گرفته و مستقیماً به بررسی شرط می‌رود (در do-while ابتدا شرط بررسی می‌شود).


int i = 1;
do {
    if (i == 3) {
        i++;
        continue; // عدد 3 چاپ نمی‌شود
    }
    System.out.print(i + " ");
    i++;
} while (i <= 5);
// خروجی: 1 2 4 5
۵. حلقه تو در تو (nested do-while)
java
int i = 1;
do {
    int j = 1;
    do {
        System.out.print("* ");
        j++;
    } while (j <= i);
    System.out.println();
    i++;
} while (i <= 5);

خروجی یک مثلث ستاره‌ای خواهد بود.

اشتباهات رایج حلقه Do While در جاوا

کاربردهای واقعی Do-While در جاوا

۱. تایید مجدد عملیات حساس (مثل حذف فایل)

۲. بازی‌های ساده (مثل حدس عدد تا زمانی که کاربر درست حدس بزند)

۳. ارسال مجدد درخواست به شبکه تا دریافت پاسخ معتبر

۴. فرم‌های چند مرحله‌ای که حداقل یک بار نمایش داده شوند

۵. پردازش صف (Queue) تا زمانی که خالی شود ولی حداقل یک بار بررسی شود



کاربردهای واقعی Do-While در جاوا

مثال کاربردی بازی حدس عدد


import java.util.Scanner;
import java.util.Random;

public class GuessGame {
    public static void main(String[] args) {
        Random rand = new Random();
        Scanner scanner = new Scanner(System.in);
        int secret = rand.nextInt(100) + 1;
        int guess;
        
        do {
            System.out.print("حدس خود را بزنید (1-100): ");
            guess = scanner.nextInt();
            if (guess > secret) {
                System.out.println("برو پایین‌تر!");
            } else if (guess < secret) {
                System.out.println("برو بالاتر!");
            }
        } while (guess != secret);
        
        System.out.println("تبریک! درست حدس زدید!");
        scanner.close();
    }
}

مقایسه Do-While با سایر زبان‌ها

  • در C/C++: ساختار کاملاً مشابه جاوا است.
  • در پایتون: حلقه do-while وجود ندارد و با while True + break شبیه‌سازی می‌شود.
  • در جاوااسکریپت: عیناً مانند جاوا عمل می‌کند.
  • جاوا از این حلقه پشتیبانی کامل دارد و از نسخه ۱.۰ وجود داشته است.

بهترین روش‌ها (Best Practices)

  1. از do-while فقط زمانی استفاده کنید که اجرای حداقل یک بار منطق برنامه را طبیعی‌تر می‌کند.
  2. از ایجاد حلقه‌های بی‌نهایت عمدی بپرهیزید؛ اگر نیاز دارید، حتماً break شرطی داشته باشید.
  3. متغیرهای شرط را قبل از حلقه مقداردهی اولیه کنید.
  4. برای خوانایی بهتر، بدنه حلقه را حتی اگر یک خط است در آکولاد قرار دهید.
  5. از do-while برای حلقه‌های طولانی که بیش از ۲۰ تکرار دارند استفاده نکنید (حلقه for معمولاً مناسب‌تر است).

سوالات متداول

س: آیا می‌توان از do-while بدون آکولاد استفاده کرد؟

ج: بله، اگر بدنه فقط یک عبارت باشد، اما برای خوانایی و جلوگیری از خطا همیشه از { } استفاده کنید.

س: آیا شرط می‌تواند متغیر از نوع غیر بولی باشد؟

ج: خیر، جاوا فقط boolean را می‌پذیرد. بر خلاف C/C++ که عدد صحیح هم مجاز است.

س: چه زمانی do-while بر while ارجحیت دارد؟

ج: وقتی می‌خواهید بدنه حداقل یک بار اجرا شود، مثلاً نمایش منو، دریافت اولین ورودی کاربر یا انجام یک بار عملیات اولیه.

س: آیا حلقه do-while می‌تواند جایگزین حلقه while شود؟

ج: از نظر فنی بله، اما با اضافه کردن یک پرچم (flag) اولیه. ولی این کار طبیعی نیست.

نتیجه‌گیری

حلقه do-while در جاوا ابزاری قدرتمند برای مواقعی است که نیاز به تضمین اجرای حداقل یک بار یک بلوک کد دارید.
درک تفاوت آن با while و کاربردهای عملی مانند دریافت ورودی معتبر، منوهای تکراری و بازی‌ها به شما کمک می‌کند کدهای تمیزتر و کارآمدتری بنویسید.
به یاد داشته باشید که سمی کالن بعد از شرط و به‌روزرسانی متغیرهای شرط در بدنه از رایج‌ترین اشتباهات هستند.
با تمرین مثال‌های بالا و استفاده در پروژه‌های واقعی، به راحتی بر این ساختار مسلط خواهید شد.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “آموزش حلقه Do While در جاوا” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو