سلام به همه دوستان در سایت ITSI.IR . در این آموزش جاوا می خواهیم به شما نشان دهیم که چطور در جاوا از اعداد اعشاری استفاده کنیم و با آنها کار کنیم .
این درس را در ابتدا با یک مثال شروع می کنیم .
برنامه NetBeans را اجرا کنید و همانند دروس قبل یک پروژه جاوا با نام MyClassTest ایجاد کنید و یک کلاس هم با نام MyClass ایجاد کنید .
در کلاس MyClass کدهای زیر را وارد کنید .

package myclasstest;

public class MyClass {
 
    private String name ;
    private double score ;
    
    public MyClass(String name , double score){
        this.name = name ;
        if(score >0.0 ){
            this.score = score ;
        }
        
    }
    
    public void addScore(double classScore){
         if(classScore >0.0){
             score = score + classScore;
         }

        if (score>20){
            score = score - classScore;
        }
     
    }
    
    public double getScore(){
        return score;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getName(){
        return name;
               
    }
}

این کلاس ما همانند دروس قبلی میباشد با این تفاوت که هم نام دانش آموز گرفته میشود و سپس نمره ی یک درس دلخواه گرفته میشود . در مرحله بعد معلم می تواند به دلخواه نمره ای را به نمره ی فعلی دانش آموز اضافه کند .
کلاس MyClass یک سازنده و چهار متد دارد . وقتی شما یک شی از کلاس ایجاد کنید نام دانش آموز و نمره ی فعلی را در سازنده از شما دریافت میکند ، نمره را از نوع double ( اعشاری )در نظر گرفتیم چون ممکن است عدد صحیح نباشد و مثلا 18.5 باشید. اگر این نمره از 0 بزرگتر باشید آن را در متغیر نمونه score قرار میدهد .
در متد addScore یک پارامتر از نوع double قرار داده شده است تا نمره ی اضافه را دریافت کند و اگر از 0 بیشتر باشد آن را با نمره فعلی دانش آموز جمع میبندد و به نمره ( متغیر score ) اضافه میکند . این متد به صورت void میباشد و در نتیجه مقداری را برگشت نمیدهد .
در این متد از یک شرط if استفاده کرده ایم که اگر نمره دانش آموز از 20 بیشتر شد ، نمره وارد شده به آن اضافه نشود و همان نمره قبل را نمایش دهد .

در مورد متد name نیاز نیست توضیح دهیم چون در دروس قبل کامل توضیح داده شده است .

متد getScore یک نوع بازگشتی double ( اعشاری )دارد و به برنامه اجازه میدهد نمره دانش آموز را به دست آورد .
حالا می خواهیم با این کلاس کار کنیم . کد زیر را در کلاس اصلی برنامه (MyClassTest ) قرار دهید :

package myclasstest;
import java.util.Scanner;

public class MyClassTest {


    public static void main(String[] args) {
        
        MyClass class1 = new MyClass("Mohammad", 16.50);
        MyClass class2 = new MyClass("Mohsen", -14);
        
        System.out.printf("%s Score : %.2f\n", class1.getName(),class1.getScore());
        System.out.printf("%s Score : %.2f\n", class2.getName(),class2.getScore());
        
        Scanner myInput = new Scanner(System.in);
        
        System.out.print("Add Score To Class1 : ");
        double addNumber = myInput.nextDouble();
        System.out.printf("\nAdding %.2f to Class1\n\n", addNumber);
        
        class1.addScore(addNumber);
        
         System.out.printf("%s Score : %.2f\n", class1.getName(),class1.getScore());
        System.out.printf("%s Score : %.2f\n", class2.getName(),class2.getScore());
        
         System.out.print("Add Score To Class2 : ");
        addNumber = myInput.nextDouble();
        System.out.printf("\nAdding %.2f to Class2\n\n", addNumber);
        
        class2.addScore(addNumber);
        
           System.out.printf("%s Score : %.2f\n", class1.getName(),class1.getScore());
        System.out.printf("%s Score : %.2f\n", class2.getName(),class2.getScore());
        
        
    }
    
}

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

درس هشتم : استفاده از اعداد اعشاری در جاوا

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

درس هشتم : استفاده از اعداد اعشاری در جاوا

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

در اجرای اول برنامه نمره های نرمال به دانش آموزان داده ایم و خروجی را مشاهده میکنیم ولی در خروجی دوم به دانش آموز شماره 2 نمره ای را داده ایم که از مقدار 20 بیشتر شود و مشاهده میکنید که نمره افزوده نشده است .
زمانی که متد getScore اجرا می شود مقدار نمره دانش آموز اول و دوم را به نمایش در می آورد اگر شما مقدار منفی برای نمره وارد کنید عدد صفر را برای دانش آموز در نظر میگیرد .

System.out.printf("%s Score : %.2f\n", class1.getName(),class1.getScore());

در این خط از برنامه ما برای خروجی از فرمت %.2f استفاده کرده ایم. از این فرمت برای چاپ مقادیر اعشاری float و double استفاده می کنیم . مقدار .2 به کار رفته در میان % و f نشان دهنده تعداد مکان اعشاری  ( 2 ) ما می باشد و در خروجی در سمت راست عدد چاپ می شود . این فرمت خروجی ها را به صدم گرد خواهد کرد مثلا عدد 123.457 به 123.46 تبدیل می شود .

double addNumber = myInput.nextDouble();

در این خط ما یک نمره را از کاربر دریافت میکنیم در این درس ما از nextDouble برای دریافت استفاده می کنیم چون ممکن است معلم نمره 1.5 را وارد کند .

class1.addScore(addNumber);

این خط از برنامه نمره دریافتی را به متد addScore ارسال میکند . در متد addScore بررسی میشود آیا نمره بیشتر از 0 هست یا خیر اگر باشید به نمره دانش آموز اضافه میشود و در مرحله بعد بررسی میکند که اگر نمره بیشتر از 20 شده باشد ، نمره دریافتی به نمره اصلی اضافه نمیشود .

System.out.printf("%s Score : %.2f\n", class1.getName(),class1.getScore());
System.out.printf("%s Score : %.2f\n", class2.getName(),class2.getScore());

در این خطوط نمره دانش آموزان توسط متد getScore چاپ میشود .

addNumber = myInput.nextDouble();

در این خط از برنامه برای دانش آموز دوم نمره دریافت میشود .

class2.addScore(addNumber);

نمره باز هم با استفاده از متد addScore و بررسی هایی که انجام میدهد به نمره قبلی دانش آموز اضافه میشود .

System.out.printf("%s Score : %.1f\n", class1.getName(),class1.getScore());
System.out.printf("%s Score : %.2f\n", class2.getName(),class2.getScore());

و در نهایت هم با استفاده از دو خط بالا نمره نهایی هر دو دانش آموز چاپ می شود .
دوستان این درس به دلیل اینکه ما در ابتدای کار و آموزش جاوا هستیم برنامه باگ های زیادی دارد ، مثلا وارد کردن رشته به جای عدد و یا اینکه کاربر نمره ها را بر خلاف نمره های معمول وارد کند مثلا 1.34 .
در آینده که با موارد بیشتری در جاوا آشنا شویم این برنامه را تکمیل تر میکنیم .
فایل آموزش را برای شما قرار داده ام . موفق و پیروز باشید و تمرین فراموش نشود .

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