سلام به همه دوستان عزیز و علاقه مند به آموزش جاوا در وب سایت ITSI.IR .
در این درس می خواهیم ادامه ی درس قبل را پیگیری کنیم و شمارا بیشتر با قدرت عبارت تکرار while آشنا کنم . برای این درس ما دو مثال را تمرین خواهیم کرد ، پس بریم برای آموزش :
در مثال و تمرین اول می خواهیم از while و if..else استفاده کنیم تا مثال درس قبل را تکمیل تر کنیم و به جای آنکه در کد مشخص کنیم که چند بار باید عدد ها وارد شوند ، کاری کنیم که تا دستور خاصی را وارد نکرده ایم اعداد از ما دریافت شوند .
برنامه netbeans را اجرا کنید و یک پروژه جدید ایجاد کنید :
در کلاس جدید کد زیر را وارد کنید تا به توضیحات آن بپردازیم :

package whileclass_2;
import java.util.Scanner;

public class WhileClass_2 {


    public static void main(String[] args) {
        
        Scanner myInput = new Scanner(System.in);       
        int total = 0 ;
        int myCounter = 0 ; 
        System.out.print("Enter Number Or -1 For Exit :");
        int number = myInput.nextInt();
        
        
        while(number != -1){
            total = total + number;
            myCounter = myCounter + 1;
            
        System.out.print("Enter Number Or -1 For Exit :");
         number = myInput.nextInt();
            
        }
        
        if(myCounter != 0){
            
            double average = (double) total / myCounter;
            
            System.out.printf("\nTotal of The %d Counter entered is %d\n", 
                    myCounter,total);
            
            System.out.printf("Average Is : %.2f\n", average);
        }else {
            System.out.println("No Number were Entered");
        }
       
    }
    
}

اگر برنامه را اجرا کنید خروجی زیرا خواهید دید :

درس دوازدهم : آشنایی بیشتر با عبارت تکرار While و مراقبت کنترل تکرار

خروجی برنامه

حالا به توضیحات کد میپردازیم

 Scanner myInput = new Scanner(System.in);       
int total = 0 ;
int myCounter = 0 ; 
System.out.print("Enter Number Or -1 For Exit :");
int number = myInput.nextInt();

در این خطوط از برنامه ابتدا یک شی از کلاس Scanner ایجاد میکنیم . سپس دو متغیر یکی برای جمع اعداد و یکی برای شمارنده ایجاد کرده ایم که مقدار دهی اولیه آنها را برابر با 0 گذاشته ایم .
در خط بعدی برنامه یک اعلان برای ورود عدد توسط کاربر قرار داده ایم که مقداری از نوع int را از کاربر دریافت میکند و در متغیر number ذخیره می کند .

while(number != -1){
total = total + number;
myCounter = myCounter + 1;

System.out.print("Enter Number Or -1 For Exit :");
number = myInput.nextInt();

}

در شرط while ما از یک مراقبت کنترل تکرار استفاده کردیم که به ما میگوید که تا زمانی که کاربر عدد -1 را وارد نکرده باشد حلقه While تکرار میشود . در حلقه while ابتدا مقدار وارد شده با مقدار اولیه total جمع بسته می شود و سپس یک عدد به شمارنده یعنی myCounter اضافه میشود سپس از کاربر میخواهد تا یک عدد دیگر را وارد کند و در متغیر number قرار میدهد . این کار تا زمانیکه کاربر -1 را وارد نکرده باشید ادامه پیدا میکند .
وقتی کاربر مقدار -1 را وارد کرد برنامه به کد زیر می رود .

if(myCounter != 0){

double average = (double) total / myCounter;

System.out.printf("\nTotal of The %d Counter entered is %d\n",
myCounter,total);

System.out.printf("Average Is : %.2f\n", average);
}else {
System.out.println("No Number were Entered");
}

در شرط if ابتدا بررسی می کند که آیا عددی وارد شده است یا خیر اگر وارد نشده باشد خط قرار داده شده در else اجرا می شود و اگر شمارنده ما برابر با 0 نباشد دستورات زیر اجرا میشود .

double average = (double) total / myCounter;

در این خط ما از cast کردن استفاده کرده ایم.برای انجام یک محاسبه اعشاری با مقادیر صحیح ، بایستی با این مقادیر موقتا به صورت اعداد اعشاری در محاسبات رفتار کنیم . جاوا دارای عملگرهای غیر باینری cast است که این کار را انجام می دهد . برای این کار از (double ) استفاده میکنیم که یک کپی موقت اعشاری از عملوند خود یعنی total ایجاد میکند و از آن استفاده میکند . به این روش استفاده از case تبدیل صریح میگویند .
این کار باعث میشود جاوا با اینکه total یک عدد int است همانند نوع double رفتار کند .
عملگر case یک عملگر غیرباینری میباشد . عملگری که یک عملوند داشته باشد غیر باینری میگویند .

System.out.printf("\nTotal of The %d Counter entered is %d\n",
myCounter,total);

در این خط هم که در دروس قبلی توضیح داده شده است مقادیر شمارنده و total چاپ می شود .

System.out.printf("Average Is : %.2f\n", average);

در این خط هم مقدار average با میزان اعشار 2رقم چاپ می شود . %.2f این کار را انجام می دهد .

در برنامه بعدی می خواهیم یک کلاس برای آنالیز نمرات دانش آموزان ایجاد کنیم .
یک پروژه جدید ایجاد کنید و کد زیر را وارد کنید . :

package whileclass_3;
import java.util.Scanner;

public class WhileClass_3 {

    public static void main(String[] args) {
        
        Scanner myInput = new Scanner(System.in);
        
        int pass =0;
        int fail = 0 ;
        int myCounter =1;
        
        while(myCounter<=10){
            System.out.print("Enter Number 1 For pass And 2 For fail : ");
            int result = myInput.nextInt();
            
            
            if(result==1){
                pass = pass+1;
                
            }
            else{
                fail = fail+1;
            }
            
            myCounter = myCounter + 1;
               
        }
        
        System.out.printf("Pass : %d\nFail : %d\n", pass,fail);
        
        if(pass>8){
            System.out.println("Class IS OKK");
        }
       
    }
    
}

سیستم برنامه بسیار ساده میباشد .

int pass =0;
int fail = 0 ;
int myCounter =1;

ابتدا سه متغیر یکی برای نمرات پاس شده با مقدار دهی اولیه 0 و یکی برای نمرات رد شده با 0 و یکی هم برای شمارنده ایجاد کرده ایم که 1 را برای مقدار دهی اولیه قرار داده ایم

while(myCounter<=10){
System.out.print("Enter Number 1 For pass And 2 For fail : ");
int result = myInput.nextInt();


if(result==1){
pass = pass+1;

}
else{
fail = fail+1;
}

myCounter = myCounter + 1;

}

در شرط While گفته ایم که تا زمانیکه 10 عدد وارد نشده است تکرار حلقه ادامه داشته باشد .
یک عدد از کاربر میگیریم و در متغیر result ذخیره می کنیم در if بررسی میشود که اگر 1 بود عدد یکی به pass اضافه می شود اگر 2 باشد یکی به fail اضافه میشود و در آخر هم یکی به شمارنده اضافه میشود .

System.out.printf("Pass : %d\nFail : %d\n", pass,fail);
در این خط تعداد مقادیر وارد شده برای pass و fail چاپ میشود .
if(pass>8){
System.out.println("Class IS OKK");
}

اگر تعداد pass شده ها بیشتر از 8 عدد باشد نشان میدهد کلاس دانش آموزی ما میانگین خوبی داشته است و یک پیغام را چاپ می کند.
خروجی برنامه را در دو تصویر مشاهده می کنید

درس دوازدهم : آشنایی بیشتر با عبارت تکرار While و مراقبت کنترل تکرار

خروجی اول برنامه

درس دوازدهم : آشنایی بیشتر با عبارت تکرار While و مراقبت کنترل تکرار

خروجی دوم برنامه و کلاس با جمع نمره بیش از 8

خب دوستان این آموزش هم به پایان رسید و امیدوارم خوب تمرین کرده باشید . سوالی بود در بخش نظرات مطرح کنید . فایل آموزش برای شما قرار داده شده است . موفق و پیروز باشید .

دانلود فایل آموزش