تا %60 تخفیف خرید برای 8 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد

با سلام به همه دوستان و همراهان عزیز Itpro. در مطلب قبلی به تعریف توابع موجود در کلاس Number پرداختیم و گفتیم که کلاس های wrapper مربوط به انواع داده اولیه در جاوا از آن ارث بری می نماید پس کلاس های wrapper هم این متدها را دارند. در ادامه به توضیح ادامه توابع موجود در این کلاس ها خواهیم پرداخت

parseint

این متدر برای تبدیل رشته به نوع داده عددی استفاده می شود و به شکل های parseInt و parseDouble و یا سایر انواع داده استفاده می شود. این متد می تواند یک یا دو پارامتر ورودی داشته باشد که پارامتر اول برای رشته ورودی است و پارامتر دوم برای مبنای عددی است که مشخص می کند مبنای عدد مورد نظر چند است. شکل نوشتاری این متد به صورت زیر است:

static int parseInt(String s)
static int parseInt(String s, int radix)

مقدار بازگشتی این متد همیشه یک عدد می باشد. از این متد می توان برای تبدیل مبناها هم استفاده کرد. برای مثالی از این متد به کد زیر توجه کنید:

public class Test{ 

   public static void main(String args[]){
      int x =Integer.parseInt("9");
      double c = Double.parseDouble("5");
      int b = Integer.parseInt("444",16);

      System.out.println(x);
      System.out.println(c);
      System.out.println(b);
   }
}

خروجی کد به شکل زیر خواهد بود

9
5.0
1092

تا به این قسمت از مطالب در مورد متدهای کلاس های wrapper توضیح دادیم حال در ادامه به بررسی متد های موجود در کلاس Math خواهیم پرداخت که بر روی اعداد عملیات خاصی انجام می دهند.

متد abs

این متد قدر مطلق عدد داده شده را باز می گرداند. آرگومان ورودی این متد می تواند از نوع int, long , float, double, short, byte باشد. نحوه استفاده از این متد در کد زیر آورده شده است:

 public static  void main(String[] args){
        int a=-8;
        double b=100;
        float f=-90f;
        int resultA=Math.abs(a);
        double resultB=Math.abs(b);
        float resultF=Math.abs(f);
        System.out.println(resultA);
        System.out.println(resultB);
        System.out.println(resultF);

    }

خروجی کد بالا به شکل زیر خواهد بود:

8
100.0
90.0

متد ceil

این متد مقدار اعشاری عدد را حذف کرده و مقدار صحیح آن را بر می گرداند. ورودی این متد یک عدد float و یا double بوده و مقدار بازگشتی آن یک عدد double است که کوچکترین عدد صحیص را برمی گرداند. این متد شبیه به متد floor است. البته برای اعداد مثبت متد floor و ceil مانند یکدیگر هستند ولی برای اعداد منفی عملکرد متفاوتی دارند. متد floor از نظر مقدار بازگشتی و آرگومان ورودی مانند Ceil است. برای مثال به کد زیر توجه کنید:

public class Test{ 

   public static void main(String args[]){
      double d = -100.675;
      float f = -90;    

      System.out.println(Math.ceil(d));
      System.out.println(Math.ceil(f)); 
					 
      System.out.println(Math.floor(d));
      System.out.println(Math.floor(f)); 
   }
}

خروجی این کد به شکل زیر خواهد بود:

-100.0
-90.0
-101.0
-90.0

متد rint

این متد یک عدد double گرفته و آن را به نزدیکترین عدد صحیح روند می کند. به این معنی که عدد double را گرفته و نزدیکتری عدد صحیح به آن را برمی گرداند. خروجی این متد از نوع double خواهد بود با این که مقدار اعشاری هم ندارد.برای مثال از این متد به کد زیر دقت کنید:

public class Test{ 

   public static void main(String args[]){
      double d = 100.675;
      double e = 100.500;
      double f = 100.200;

      System.out.println(Math.rint(d));
      System.out.println(Math.rint(e)); 
      System.out.println(Math.rint(f)); 
   }
}

خروجی کد به شکل زیر است:

101.0
100.0
100.0

متد round

این متد یک عدد float و یا double را گرفته و مقداری از نوع int بازگردانی می کنند. تفاوت این متد با rint در این است که متد rint فقط double می گرفت و فقط double برمی گرداند ولی متد round هم می تواند ورودی float داشته باشد و هم double و مقدار بازگشتی آن int و long است. به این معنی که اگر ورودی اش double باشد خروجی long و اگر ورودی float داشته باشد خروجی int دارد. تفاوت دیگر این متد با rint در عملکرد آن در حالی که مقدار اعشاری 0.5 باشد. این متد به سمت بالا روند می کند و rint به سمت پایین روند می کند. مثالی از این متد در کد زیر آورده شده است.

101
101
100
90

متد های min, max

این متد ها دو عدد ورودی از هر نوع داده عددی دریافت کرده و عدد بزرگتر یا کوچکتر را برمی گردانند. به این معنی که min عدد کوچکتر و max عدد بزرگتر را برمی گرداند. این دو متد برای انواع داده های عددی به کار می روند. که در خط زیر نشان داده شده است.

double min(double arg1, double arg2)
float min(float arg1, float arg2)
int min(int arg1, int arg2)
long min(long arg1, long arg2)

مثالی از این متدها در کد زیر آورده شده است.

public class Test{ 

   public static void main(String args[]){
      System.out.println(Math.min(12.123, 12.456));      
      System.out.println(Math.min(23.12, 23.0));  
	  System.out.println(Math.max(12.123, 12.456));      
      System.out.println(Math.max(23.12, 23.0));
   }
}

خروجی کد بالا به شکل زیر است:

12.123
23.0
12.456
23.12

متد exp

در ریاضیات و مخصوصا قسمت لگاریتم ها عدد e بسیار کاربرد دارد. حال در جاوا نیز برای استفاده از این عدد و اعمال لگاریتمی امکاناتی فراهم شده است. یکی از این امکانات متد exp می باشد. این متد یک ورودی گرفته و در نتیجه e به توان عدد وارد شده را برمی گردانند. عدد e یک عدد با اعشار طولانی است که می توانید مقدار آن را با استفاده از Math.E به دست آورید. اگر نام ورودی متد exp را x بگذاریم خروجی این متد e^x خواهد بود. ورودی و خروجی این متد از نوع double خواهد بود. برای مثال به کد زیر توجه کنید:

public class Test{ 

   public static void main(String args[]){
      double x = 11.635;
      double y = 2.76;

      System.out.printf("The value of e is %.4f%n", Math.E);
      System.out.printf("exp(%.3f) is %.3f%n", x, Math.exp(x));  
   }
}

در این کد برای چاپ کردن مقادیر برای اولین بار از متد printf استفاده شده است. با استفاده از این متد می توان متن خروجی را فرمت بندی کرد. به این شکل که اگر دقت کنید در خط اولی که متد printf به کار برده شده است در داخل متن عبارت "%.4f" به کار برده شده است و در انتها یک عبارت عددی به عنوان ورودی به متد داده شده است که در اینجا عبارت عددی Math.E می باشد. معنی این خط این است که یک عبارت اعشاری با 4 رقم اعشار به جای "%4f" قرار می گیرد که آن عدد به عنوان ورودی داده شده است. در خط دوم printf نیز دو عدد با 3 رقم اعشار در داخل متن قرار گرفته است. خروجی کد بالا به شرح زیر خواهد بود:

The value of e is 2.7183
exp(11.635) is 112983.831

متد log

این متد برخلاف اسمش مقدار لگاریتم طبیعی عدد ورودی را برمی گرداند به عبارت دیگر این متد ln یک عدد را محاسبه می کند. ورودی و خروجی این متد عدد double است. مثالی از این متد در کد زیر آورده شده است. دقت کنید که در این کد نیز از متد printf نیز استفاده شده است.

public class Test{ 

   public static void main(String args[]){
      double x = 11.635;
      double y = 2.76;

      System.out.printf("The value of e is %.4f%n", Math.E);
      System.out.printf("log(%.3f) is %.3f%n", x, Math.log(x));
   }
}

خروجی کد به شکل زیر است:

The value of e is 2.7183
log(11.635) is 2.454

متد pow

این متد متد به توان رساندن می باشد. کار این متد به این شکل است که عدد ورودی اولی را به عنوان پایه توان در نظر گرفته و عدد دومی را به عنوان مقدار توان در نظر می گیرد. بنابراین عدد اول را به توان عدد دوم می رساند. نوع داده ورودی و خروجی این متد همه از نوع double هستند. برای مثال به کد زیر دقت کنید:

public class Test{ 

   public static void main(String args[]){
      double x = 11.635;
      double y = 2.76;

      System.out.printf("The value of e is %.4f%n", Math.E);
      System.out.printf("pow(%.3f, %.3f) is %.3f%n", x, y, Math.pow(x, y));

   }
}

کد بالا خروجی زیر را خواهد داشت:

The value of e is 2.7183
pow(11.635, 2.760) is 874.008

متد sqrt

این متد جذر عدد داده شده را برمی گرداند به عبارت دیگر این متد همان متد pow است با این تفاوت که آرگومان ورودی آن 0.5 می باشد. اعداد ورودی و خروجی این متد double می باشد. کد زیر یک مثال از این متد می باشد.

public class Test{ 

   public static void main(String args[]){
      double x = 11.635;

           System.out.printf("sqrt(%.3f) is %.3f%n", x, Math.sqrt(x));
   }
}

خروجی این کد به شکل زیر است:

sqrt(11.635) is 3.411

متدهای sin, cos, tan

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

public class Test{ 

   public static void main(String args[]){
     double degrees = 45.0;
     double radians = Math.toRadians(degrees);
 System.out.format("The value of pi is %.4f%n", Math.PI);
     System.out.format("The sine of %.1f degrees is %.4f%n", degrees, Math.sin(radians));
	 System.out.format("The cosine of %.1f degrees is %.4f%n", degrees, Math.cos(radians));
	  System.out.format("The tangent of %.1f degrees is %.4f%n", degrees, Math.tan(radians));
   }
}

خروجی کد بالا به شکل زیر خواهد بود:

The value of pi is 3.1416
The sine of 45.0 degrees is 0.7071
The cosine of 45.0 degrees is 0.7071
The tangent of 45.0 degrees is 1.0000

متدهای asin, acos, atan

این متدها برخلاف سه متدی که قبلا گفته شد مقدار نسبت مثلثاتی را گرفته و زاویه آن را محاسبه می نمایند. مقدار ورودی و بازگشتی این متدها از نوع double می باشد. مثال این متدها در زیر آمده است:

public class Test{ 

   public static void main(String args[]){
   
     double degrees = 45.0;
     double radians = Math.toRadians(degrees);

     System.out.format("The value of pi is %.4f%n", Math.PI);
     System.out.format("The arcsine of %.4f is %.4f degrees %n", Math.sin(radians), Math.toDegrees(Math.asin(Math.sin(radians))));
	 System.out.format("The arccosine of %.4f is %.4f degrees %n", Math.cos(radians), Math.toDegrees(Math.acos(Math.sin(radians))));
	 System.out.format("The arctangent of %.4f is %.4f degrees %n", Math.cos(radians), Math.toDegrees(Math.atan(Math.sin(radians))));

   }
}

خروجی کد بالا به شکل زیر خواهد بود:

The value of pi is 3.1416
The arcsine of 0.7071 is 45.0000 degrees
The arccosine of 0.7071 is 45.0000 degrees
The arctangent of 1.0000 is 45.0000 degrees

همان گونه که در کد بالا مشاهده می کنید از متدهایی به نام های toRadians و toDegrees در این برنامه استفاده شده است. این دو متد برای تبدیل زاویه از واحد درجه به رادیان و از رادیان به درجه به کار می روند. به شکلی که متد toDegrees زاویه رادیان را گرفته و به درجه تبدیل می کند و متد toRadins عکس این عمل را انجام می دهد. دقت داشته باشید که ورودی و خروجی این دو متد از نوع double می باشد.

متد random

این متد برای ساخت اعداد تصادفی بین 0.0 تا 1.0 به کار می رود. حال اگر بخواهید که عددی در رنج خاصی تولید کنید باید از این متد استفاده کنید و مقدار تولید شده را ضرب کنید. مقدار بازگشتی این متد double خواهد بود. این متد آرگومان ورودی ندارد. برای مثالی از این متد به کد زیر توجه کنید.

public class Test{ 

   public static void main(String args[]){
     System.out.println( Math.random() );
     System.out.println( Math.random() );
   }
}

خروجی کد به شکل زیر خواهد بود:

0.16763945061451657
0.400551253762343

هربار که متد random فراخوانی شود یک عدد تصادفی جدید تولید خواهد شد. تا به این بخش از مطالب به بررسی کلاس های wrapper و همچنین کلاس استاتیک Math پرداختیم در این قسمت همه ی اعمال بر روی اعداد بود و متدهایی که با اعداد سرو کار داشتند توضیح داده شد. در بخش های آنیده به بررسی کاراکتر ها و رشته ها خواهیم پرداخت. Itpro باشید.

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

نظر شما
برای ارسال نظر باید وارد شوید.
2 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند