آموزش نوشتن متدهای جاوا برای خودتان

در بخش های قبل از متدهایی استفاده کرده اید و مشاهده کرده اید که متدهای داخلی چقدر می توانند مفید باشند. در این بخش چگونگی نوشتن متدهایی را برای خودتان فراخواهید گرفت.

ساختار یک متد

یک متد گروهی کد می باشد که کار خاصی انجام می دهند. اما متدهایی هستند که به روش خاصی تنظیم شده اند. شما یک تیتر متد و یک بدنه ی متد دارید. تیتر جایی است که در آن به جاوا می گویید که چه مقداری را متد باز خواهد گرداند (یک مقدار int، یک مقدار double، یک مقدار string و غیره). به همراه نوع مقدار بازگردانده شده به یک نام برای متد خود نیاز دارید که این نام نیز در تیتر قرار می گیرد. می توانید مقادیر را به متدهای خود انتقال دهید و این مقادیر بین دو پرانتز قرار می گیرند. بدنه ی متد جایی است که کد شما قرار می گیرد.

آموزش جاوا

نوع گزارش شده ی متد (return type) در ابتدا قرار می گیرد که در کد بالا یک نوع int می باشد. پس از نوع متد نیاز به یک فاصله دارید که با نام متد شما دنبال می شود. متد بالا را totalنامیده ایم. بین پرانتزها به جاوا گفته ایم که ما در متد متغیری به نام aNumber توزیع می کنیم که یک عدد صحیح خواهد بود.

برای جدا کردن این متد از هر نوع کد دیگری، نیاز به یک جفت کروشه دارید. کد شما برای متد بین کروشه ها قرار می گیرد. به لغت return در متد بالا دقت کنید. مشخص است که نشان دهنده ی مقداری است که می خواهید پس از اجرای کد خود از متد خود گزارش دهید. اما این مقدار باید از همان نوع بازگشتی در تیتر متد باشد. بنابراین اگر متد را با int total شروع کرده باشید، مقدار بازگشتی نمی تواند یک رشته باشد.

گاهی اوقات اصلا نمی خواهید که جاوا موردی را بازگرداند. به Trim در بخش قبل فکر کنید. ممکن است که بخواهید فقط متد Trim به کار خود ادامه دهد و چیزی به شما بازگردانده نشود. یک متد که هیچ مقداری را به شما بازنمی گرداند، می تواند با لغت void تنظیم شود. در برخی موارد نیازی به لغت کلیدی return نیست. در اینجا متدی را مشاهده می کنید که هیچ مقداری را باز نمی گرداند.

آموزش جاوا

تمام کاری که متد بالا انجام میدهد چاپ کردن یک متن می باشد. این متد می تواند به کار خود ادامه دهد، بنابراین آن را با عنوان یک متد void تنظیم کرده ایم. هیچ مقدار گزارش داده ای وجود ندارد.

متدها نیاز به مقادیری که به آنها منتقل شود، ندارند. شما می توانید تنها چند کد را اجرا کنید. در اینجا یک متد void (خالی) بدون انتقال هیچ مقداری مشاهده می کنید.

آموزش جاوا

و در تصویر زیر متد int را مشاهده می کنید که دارای هیچ مقداری برای انتقال نمی باشد.

آموزش جاوا

همان طور که مشاهده می کنید پرانتزها در هر دو متد خالی هستند. اما هنوز لازم می باشند. اگر این پرانتزها را استفاده نکنید، با پیغام خطا روبرو خواهید شد.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

متدهای جاوا


متد جاوا مجموعه ای از وضعیت هاست که برای اجرای یک عملکرد گروه بندی می شوند. به عنوان مثال وقتی متد System.out.println را فرا خوانی می کنید، درواقع سیستم چندین عبارت را برای نمایش یک پیغام در console اجرا می کند.اکنون شما چگونگی ایجاد متودهای خود را با بازگشت مقادیر یا بدون بازگشت مقادیر، فراخوانی یک متود با پارامترها و بدون پارامترها، بارگذاری متودها با استفاده از همان نام ها و به کارگیری متود انتزاع در طراحی برنامه فرا خواهید گرفت.
 ایجاد متد
با توجه به مثال زیر می توانید ترکیب یک متد را توضیح دهید
 مثال: 1 2 3 4 5 6 7 public static int funcName(int a, int b)    {‎    ‎  // body‎    ‎}‎
در اینجا: public static: اصلاح کننده int: نوع بازگشت funcName: نام عملکرد a, b: پارامترهای فرمال int a, int b: لیست پارامترها
متودها با عنوان Procedures یا Functions نیز شناخته می شوند:  Procedures : هیچ مقداری را بازنمی گرداند.  Functions: یک مقدار را بازمی گردانند.
تعریف متود حاوی یک تیتر و یک بدنه می شود. همین مورد در زیر نشان داده شده است:
 مثال: 1 2 3 4 5 modifier returnType nameOfMethod (Parameter List) {‎    ‎ // method body    ‎}‎
ترکیب نمایش داده شده در بالا حاوی: modifier: نوع access مربوط به متود را تعریف می کند و استفاده از آن انتخابی می باشد returnType:متود ممکن است یک مقدار را بازگرداند nameOfMethod: این نام متود می باشد. ویژگی خاص متود حاوی نام متود و لیست پارامترها می باشد. Parameter List: لیست پارامترها که حاوی نوع، ترتیب و تعداد پارامترهای یک متود می باشد. اینها انتخابی هستند، متود ممکن حاوی هیچ پارامتری نباشد. method body: بدنه ی متود تعریف می کند که متود با عبارات چه انجام می دهد.
 مثال:
در اینجا source code متود تعریف شده ی بالا به نام max() می باشد. این متود دارای دو پارامتر num1 و num2 می باشد و حداکثر را بین هر دو بازمی گرداند:   /** the snippet returns the minimum between two numbers */‎ public static int minFunction(int n1, int n2) {‎ ‎   int min;‎ ‎   if (n1 > n2)‎ ‎      min = n2;‎ ‎   else ‎      min = n1; ‎   return min; ‎   ‎}‎  فراخوانی متد
برای استفاده از یک متد ابتدا باید فراخوانده شود. دو روش در فراخوانی یک متد وجود دارد، به عنوان مثال متدی که یک مقدار را بازمی گرداند و متدی که هیچ چیز بازنمی گرداند.فرایند فراخوانی ماود ساده می باشد. وقتی که برنامه ای یک متد را فرامی خواند، کنترل برنامه به فراخوانی متد تغییر می یابد. سپس این متد فراخوانده شده کنترل را به فراخواننده تحت دو شرط، بازمی گرداند، وقتی: بازگشت عبارت اجرا می شود اتمام متد در حال بستن گروه می باشد
متودهایی که پوچ (void) گزارش می دهند، برای فراخوانی یک عبارت در نظر گرفته می شوند. اجازه بدهید مثالی را در نظر بگیریم: 1 ;System.out.println("This is tutorialspoint.com!")
مقدار متد returning با مثال زیر قابل درک می باشد: 1 ;int result = sum(6, 9)
 مثال:
در زیر مثالی از چگونگی تعریف یک متد و چگونگی فراخوانی آن را مشاهده می کنید: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 public class ExampleMinNumber{‎    ‎   ‎    ‎   public static void main(String[] args) {‎    ‎      int a = 11;‎    ‎      int b = 6;‎    ‎      int c = minFunction(a, b);‎    ‎      System.out.println("Minimum Value = " + c);‎    ‎   }‎           ‎   /** returns the minimum of two numbers */‎    ‎   public static int minFunction(int n1, int n2) {‎    ‎      int min;‎    ‎      if (n1 > n2)‎    ‎         min = n2;‎    ‎      else    ‎         min = n1;‎           ‎      return min; ‎    ‎   }‎    ‎}‎
این مثال نتیجه ی زیر را تولید خواهد کرد: Minimum value = 6  لغت کلیدی void
لغت کلیدی void به ما اجازه می دهد تا متدهایی را ایجاد کنیم که هیچ مقداری را بازنمی گرداند. در مثال زیر یک متد methodRankPoints را در نظر می گیریم. این متد یک متد void می باشد که هیچ مقداری را بازنمی گرداند. فراخوانی به یک متد void باید یک عبارت باشد، به عنوان مثالmethodRankPoints(255.7)، که یک عبارت جاواست که با یک نقطه ویرگول به پایان می رسد، همانطور که در مثال زیر نشان داده شده است
 مثال: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public class ExampleVoid {‎           ‎   public static void main(String[] args) {‎    ‎      methodRankPoints(255.7);‎    ‎   }‎           ‎   public static void methodRankPoints(double points) {‎    ‎      if (points >= 202.5) {‎    ‎         System.out.println("Rank:A1");‎    ‎      }‎    ‎      else if (points >= 122.4) {‎    ‎         System.out.println("Rank:A2");‎    ‎      }‎    ‎      else {‎    ‎         System.out.println("Rank:A3");‎    ‎      }‎    ‎   }‎    ‎}‎
این مثال نتیجه ی زیر را تولید خواهد کرد:
Rank:A1  انتقال پارامترها با مقدار
هنگام کار تحت فرایند فراخوانی، argument باید منتقل شود. اینها باید به همان ترتیبی باشند که پارامترهای مربوطه در تعیین متود هستند. پارامترها می توانند با مقدار یا با مرجع منتقل شوند.انتقال پارامترها با مقدار به معنای فراخوانی یک متود با یک پارامتر می باشد. از این طریق مقدار argument به پارامتر منتقل می شود.برنامه ی زیر مثالی از انتقال پارامتر با مقدار را نشان می دهد. مقادیر argument ها، حتی پس از فراخوانی متود، بدون تغییر باقی می مانند. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 public class swappingExample {‎           ‎   public static void main(String[] args) {‎    ‎      int a = 30;‎    ‎      int b = 45;‎           ‎      System.out.println("Before swapping, a = " +‎    ‎                          a + " and b = " + b);‎           ‎      // Invoke the swap method‎    ‎      swapFunction(a, b);‎    ‎      System.out.println("\n**Now, Before and After swapping values will be same ‎here**:");‎    ‎      System.out.println("After swapping, a = " +‎    ‎                         a + " and b is " + b);‎    ‎   }‎           ‎   public static void swapFunction(int a, int b) {‎    ‎   ‎    ‎      System.out.println("Before swapping(Inside), a = " + a    ‎                           + " b = " + b);‎    ‎      // Swap n1 with n2‎    ‎      int c = a;‎    ‎      a = b;‎    ‎      b = c;‎           ‎      System.out.println("After swapping(Inside), a = " + a    ‎                           + " b = " + b);‎    ‎   }‎    ‎}‎
این مثال نتیجه ی زیر را به دنبال دارد: 1 2 3 4 5 6 7 8 9 10 11 Before swapping, a = 30 and b = 45    Before swapping(Inside), a = 30 b = 45    After swapping(Inside), a = 45 b = 30           **Now, Before and After swapping values will be same here**:    After swapping, a = 30 and b is 45  Metho Overloading
وقتی که یک گروه دارای دو و یا چند متود هم نام اما با پارامترهای متفاوت می باشد، این امر method overloading نامیده می شود، که متفاوت با overriding می باشد. در overriding یک متد دارای همان نام، نوع، تعداد پارامترها و غیره می باشد.اجازه بدهید مثال قبل را برای یافتن حداقل تعداد عدد صحیح در نظر بگیریم. اجاره بدهید بگوییم که می خواهیم حداقل تعداد نوع double را پیدا کنیم. سپس مفهوم overloading برای ایجاد دو یا چند متد هم نام اما با پارامترهای متفاوت، معرفی خواهد شد.مثال زیر همین مورد را توضیح می دهد: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 public class ExampleOverloading{‎           ‎   public static void main(String[] args) {‎    ‎      int a = 11;‎    ‎      int b = 6;‎    ‎      double c = 7.3;‎    ‎      double d = 9.4;‎    ‎      int result1 = minFunction(a, b);‎    ‎      // same function name with different parameters‎    ‎      double result2 = minFunction(c, d);‎    ‎      System.out.println("Minimum Value = " + result1);‎    ‎      System.out.println("Minimum Value = " + result2);‎    ‎   }‎           ‎  // for integer‎    ‎   public static int minFunction(int n1, int n2) {‎    ‎      int min;‎    ‎      if (n1 > n2)‎    ‎         min = n2;‎    ‎      else    ‎         min = n1;‎           ‎      return min; ‎    ‎   }‎    ‎   // for double‎    ‎   public static double minFunction(double n1, double n2) {‎    ‎     double min;‎    ‎      if (n1 > n2)‎    ‎         min = n2;‎    ‎      else    ‎         min = n1;‎           ‎      return min; ‎    ‎   }‎    ‎}‎
این مثال نتیجه زیر را به دنبال دارد : Minimum Value = 6 Minimum Value = 7.3متدهای overloading برنامه را خوانا می سازد. در اینجا دارای یک نام می باشند، اما پارامترهای متفاوت دارند. حداقل تعداد انواع صحیح (integer)و double نتیجه می باشد.
متد جاوا مجموعه ای از وضعیت هاست که برای اجرای یک عملکرد گروه بندی می شوند. به عنوان مثال وقتی متد System.out.println را فرا خوانی می کنید، درواقع سیستم چندین عبارت را برای نمایش یک پیغام در console اجرا می کند.
اکنون شما چگونگی ایجاد متدهای خود را با بازگشت مقادیر یا بدون بازگشت مقادیر، فراخوانی یک متد با پارامترها و بدون پارامترها، بارگذاری متدها با استفاده از همان نام ها و به کارگیری متد انتزاع در طراحی برنامه فرا خواهید گرفت.
   استفاده از argument های Command-Line
گاهی اوقات وقتی برنامه ای را اجرا می کنید، تمایل خواهید داشت که اطلاعات را به برنامه انتقال دهید. این کار به وسیله ی انتقال خط فرمان argument ها به main( ) انجام می شود.یک command-line argument اطلاعاتی است که مستقیما نام برنامه را در هنگام اجرا روی خط فرمان دنبال می کند. دسترسی به argument های خط فرمان در داخل یک برنامه ی جاوا بسیار آسان می باشد، آنها مانند رشته ها در ردیف String به main( ) منتقل می شوند.
 مثال:
برنامه ی زیر همه ی argument های خط فرمان را که از طریق آنها فراخوانده شد، نمایش می دهد: 1 2 3 4 5 6 7 public class CommandLine {‎           ‎   public static void main(String args[]){ ‎    ‎      for(int i=0; i
اجرای این برنامه را به شکلی که در زیر نشان داده شده، امتحان کنید: 1 java CommandLine this is a command line 200 -100
این برنامه نتیجه ی زیر را به دنبال دارد: 1 2 3 4 5 6 7 8 9 10 11 12 13 args[0]: this    args[1]: is    args[2]: a    args[3]: command    args[4]: line    args[5]: 200    args[6]: -100  سازنده ها
یک سازنده در هنگام ایجاد، یک آبجکت را مقدار دهی می کند. این سازنده هم نام گروه خود می باشد و از لحلظ نحوی مشابه یک متد است. به هرحال سازنده ها هیچ نوع بازگشتی مشخصی ندارند.معمولا برای دادن مقادیر اولیه به متغیرهای نمونه که توسط گروه تعریف شده اند ، یا برای اجرای دیگر روش های راه اندازی که برای ایجاد یک آبجکت کامل ، از یک سازنده استفاده خواهید کرد.همه ی گروه ها دارای سازنده هستند، چه شما برای آن تعریف کنید و چه نکنید، زیرا جاوا به طور خودکار یک سازنده ی پیش فرض ارائه می دهد که همه ی متغیرهای عضو را به صفر مقدار دهی می کند. به هرحال زمانی که شما سازنده ی خود را تعریف می کنید، سازنده ی پیش فرض دیگر مورد استفاده قرار نمی گیرد.در اینجا مثال ساده ای را می بینید که از یک سازنده استفاده می کند.
 مثال: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // A simple constructor.‎    class MyClass {‎    ‎   int x;‎ ‎   // Following is the constructor‎    ‎   MyClass() {‎    ‎      x = 10;‎    ‎   }‎    ‎}‎
سازنده را برای آبجکت های اولیه فرا می خوانید، مانند زیر: 1 2 3 4 5 6 7 8 9 10 11 12 public class ConsDemo {‎  ‎   public static void main(String args[]) {‎    ‎      MyClass t1 = new MyClass();‎    ‎      MyClass t2 = new MyClass();‎    ‎      System.out.println(t1.x + " " + t2.x);‎    ‎   }‎    ‎}‎
اکثر اوقات، به سازنده ای نیاز خواهید داشت که یک یا چند پارامتر را می پذیرد. پارامترها به همان روشی به یک سازنده اضافه می شوند که به یک متد اضافه می شوند، تنها کافیست آنها را در داخل پرانتزها و پس از نام سازنده قرار دهید.در اینجا مثال ساده ای را مشاهده می کنید که از یک سازنده استفاده می کند: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // A simple constructor.‎    class MyClass {‎    ‎   int x;‎ ‎   // Following is the constructor    ‎   MyClass(int i ) {‎    ‎      x = i;‎    ‎   }‎    ‎}‎
سازنده را برای مقدار دهی آبجکت ها فرا می خوانید، مانند زیر: 1 2 3 4 5 6 7 8 9 10 11 12 public class ConsDemo {‎ ‎   public static void main(String args[]) {‎    ‎      MyClass t1 = new MyClass( 10 );‎    ‎      MyClass t2 = new MyClass( 20 );‎    ‎      System.out.println(t1.x + " " + t2.x);‎    ‎   }‎    ‎}‎
این مثال نتیجه ی زیر را تولید می کند: 1 Variable Arguments(var-args)
JDK 1.5 شما را قادر به انتقال یک متغیر عددی از argument های هم نوع به یک متود می سازد. پارامتر در متود مانند زیر اعلام می شود:typeName... parameterNameدر اعلام متود، نوع را که با یک (...) دنبال می شود، تعیین می کنید. فقط یک پارامتر variable-length ممکن است در یک متود تعیین شود و این پارامتر باید آخرین پارامتر باشد. هر پارامتر معمول دیگری باید قبل از آن قرار بگیرد. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 public class VarargsDemo {‎ ‎   public static void main(String args[]) {‎    ‎      // Call method with variable args  ‎              ‎  printMax(34, 3, 3, 2, 56.5);‎    ‎      printMax(new double[]{1, 2, 3});‎    ‎   }‎           ‎   public static void printMax( double... numbers) {‎    ‎   if (numbers.length == 0) {‎    ‎      System.out.println("No argument passed");‎    ‎      return;‎    ‎   }‎           ‎   double result = numbers[0];‎           ‎   for (int i = 1; i    ‎      if (numbers[i] >  result)‎    ‎      result = numbers[i];‎    ‎      System.out.println("The max value is " + result);‎    ‎   }‎    ‎}‎
این مثال نتیجه ی زیر را به دنبال دارد: The max value is 56.5 The max value is 3.0
   متد finalize( ):
ممکن است متودی را تعریف کنید که درست قبل از تخریب نهایی یک آبجکت به وسیله ی garbage collector ، فراخوانده خواهد شد. این متود finalize( ) نامیده می شود و می تواند برای اطمینان دادن این مسئله استفاده شود که آیا به درستی به پایان رسیده.برای مثال: ممکن است از finalize( ) برای اطمینان از بسته شدن یک فایل باز در آن آبجکت استفاده کنید. هروقت لازم است آبجکتی از آن گروه را بازیابی کنند، زمان اجرای جاوا آن برنامه را فرا می خواند.در داخل متد finalize( ) ، فعالیت هایی را تعیین می کنید که باید قبل از تخریب یک آبجکت اجرا شوند.متد finalize( ) دارای این فرم کلی می باشد: 1 2 3 4 5 6 7 protected void finalize( )‎    ‎{‎    ‎   // finalization code here‎    ‎}‎
در اینجا لغت کلیدی محافظت شده یک تعیین کننده است که با کد تعریف شده در خارج گروه آن، مانع دسترسی به finalize( ) می شود.این به این معناست که شما از زمان اجرای finalize( ) و حتی از اجرای آن مطلع نمی شوید. برای مثال اگر برنامه ی شما قبل از وقوع garbage collection اتفاق بیفتد، finalize( ) اجرا نخواهد شد.این مثال نتیجه ی زیر را به دنبال دارد: Minimum Value = 6 Minimum Value = 7.3متدهای overloading برنامه را خوانا می سازد. در اینجا دارای یک نام می باشند، اما پارامترهای متفاوت دارند. حداقل تعداد انواع صحیح (integer)و double نتیجه می باشد.
 
  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش Formatted Strings در جاوا

رشته های متن با استفاده از فرمان printf می توانند فرمت شده و خروجی شوند. فرمان printf مجموعه ای از کاراکترها با عنوان format specification (مشخصات فرمت) را درک می کند. سپس این فرمان یک رشته از متن را گرفته و و آن را قالب بندی می کند، براساس مشخصات قالب تایید شده. به عنوان مثال فرض کنید که می خواهیم پنجره ی Output متنی را در ستون های مرتب نمایش دهد، مانند تصویر زیر:

آموزش جاوا

اولین ستون از سمت چپ و دومین ستون از سمت راست مرتب شده اند. کد مربوط به Exam_Name و Exam_Grade مانند زیر می باشد:

1
2
String heading1 = "Exam_Name";
String heading2 = "Exam_Grade";
 
1
System.out.printf( "%-15s %15s %n", heading1, heading2);

برای به دست آوردن ستون مرتب شده از سمت چپ نیاز به یک نماد درصد، یک نماد منها، تعداد کاراکترها و سپس حرف "s" ( s کوچک) دارید. بنابراین ''%-15s'' به معنای 15 کاراکتر مرتب شده از سمت چپ می باشد.

برای به دست آوردن یک ستون مرتب شده از سمت راست همان ترتیب کاراکترها استفاده می شوند، به جز علامت منها.

برای به دست آوردن یک newline نماد %n استفاده می شود. دقت داشته باشید که کاراکترها با علامت های نقل قول دوتایی احاطه شده اند.

پس از یک کاما، متنی را تایپ می کنید که قصد قالب بندی آن را دارید. اولین کاما در کد فوق مشخصات قالب ( format specification ) را از متنی که قرار است قالب بندی شود، جدا می سازد.

در اینجا جدول هایی از گزینه های مختلف را مشاهده می کنید:

یک رشته را با تعداد کاراکترهای مورد نیاز قالب بندی می کند.
“%s”
رشته ای را با تعداد کاراکترهای مشخص و از سمت راست قالب بندی می کند.
“%15s”
رشته ای را با تعداد کاراکترهای مشخص و از سمت چپ قالب بندی می کند.
“%-15s”

اگر بخواهید اعداد را قالب بندی کنید یا می توانید از کاراکتر "d" استفاده کنید یا، برای اعداد شناور ممیزی، از کاراکتر "f".

قالب بندی اعداد صحیح:

یک رشته را با تعداد اعداد مورد نیاز قالب بندی می کند.
“%d”
یک رشته را با تعداد مشخصی از اعداد صحیح قالب بندی می کند. اگر اعداد صحیح کافی نباشند، سمت چپ را با فاصله ها پر می کند.
“4%d”
یک رشته را با تعداد مشخصی از اعداد صحیح قالب بندی می کند. اگر اعداد صحیح کافی نباشند، سمت چپ را با 0 پر خواهد کرد.
 

قالب بندی اعداد ممیزی شناور:

یک رشته با تعداد اعداد مورد نیاز قالب بندی می کند. همیشه به شما 6 مکان ممیزی می دهد.
“%f”
یک رشته با تعداد اعداد مورد نیاز قالب بندی می کند. دو مکان ممیزی ارائه می دهد.
“%.2f”
به دو مکان ممیزی قالب بندی می کند، اما تمام رشته 10 کاراکتر را اشغال می کند. اگر اعداد کافی وجود نداشته باشند، سپس فضاها در سمت چپ اعداد استفاده می شوند.
“%10.2f”

در اینجا مثال هایی از کدهای مربوط به String، عدد صحیح و قالب بندی ممیز شناور (floating point) را مشاهده می کنید. آنها را برای خود امتحان کنید.

آموزش جاوا

مانند فوق، اما اعداد 10 مکان را با فضاهایی در سمت چپ، اشغال می کنند.

آموزش جاواآموزش جاوا

یک عدد ممیزی شناور را قالب بندی کرده و یک کاراکتر newline اضافه کنید. عدد ممیزی دارای شش مکان اعشاری خواهد بود.

آموزش جاوا

درست مانند فوق، اما تنها دو قسمت اعشاری را قالب بندی خواهد کرد.

آموزش جاوا

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

آموزش جاوا

در اینجا نیز کد مربوط به قالب بندی فوق را مشاهده می کنید:

آموزش جاوا

یک تمرین با قالب بندی داشته باشید و چگونگی به دست آوردن آن را مشاهده کنید. اگر پیغام خطا دریافت کردید، ممکن است قالب بندی نوع "s" را با قالب بندی نوع "d" اشتباه گرفته باشید.

 

آموزش متد جایگزینی (replace) در جاوا

تود جایگزینی (replace) برای جایگزین کردن همه ی وقایع مربوط به یک کاراکتر در یک رشته ی خاص استفاده می شود. این جمله را در نظر بگیرید:

"Where are you books?"

ما قصد داریم که لغت "your" را جایگزین "you" کنیم. کد مربوط را در اینجا مشاهده می کنید:

آموزش جاوا

روش های زیادی در استفاده از متود replace وجود دارد و آنها در آنچه بین پرانتزهای متود قرار می گیرد با یکدیگر متفاوت هستند. ما یک ترتیبی از کاراکترها را با ترتیبی دیگر جایگزین می کنیم. کاما مانند کلمه ی with ، این دو را از یکدیگر مجزا می کند.

همچنین می توانید یک کاراکتر مجزا را جایگزین کنید:

1
aString.replace( '£', '@' )

کد فوق "Replace £ with @" را می خواند.

(شما می توانید از چیزی به نام عبارت متداول (regular expression) در متودهای جایگزینی خود استفاده کنید، اما این مسئله خارج از این آموزش می باشد.)

Trim

شما فضاهای سفید را می توانید در رشته های خود مرتب کنید. فضای سفید مواردی مانند کاراکترها، تب ها و کاراکترهای newline می باشند – به عبارت دیگر کاراکترهایی که شما نمی توانید ببینید. استفاده از متود trim آسان می باشد:

1
2
String amend = " white space ";
amend = amend.trim( );

بنابراین متود trim بعد از رشته ای که می خواهید اصلاح کنید، قرار می گیرد. کاراکترهای خالی قبل از لغت "white" و پس از "space" در کد بالا حذف خواهند شد.

اگر از طرف یوزر ورودی دریافت می کنید، استفاده از trim روی رشته های وارد شده فکر بسیار خوبی می باشد. اکنون اجرای رشته را رها کرده و ادامه می دهیم. بخش بعد رشته های فرمت شده از متن می باشند.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش متد charAt در جاوا

می توانید چک کنید که کدام کاراکتر مجزا در یک رشته ی خاص قرار می گیرد. متود charAt در جاوا به این منظور استفاده می شود. در اینجا کد مربوط به آن را مشاهده می کنید:

 
String email_address = "meme@me.com";
 
char aChar = email_address.charAt( 4 );
System.out.println( aChar );

این کد حرف مربوط به موقعیت 4 را در رشته ی آدرس ایمیل بررسی می کند. مقدار گزارش شده متغیری از نوع char می باشد:

 
char aChar = email_address.charAt( 4 );

وقتی که کد فوق اجرا می شود، خروجی کاراکتر @ می باشد. عدد بین پرانتزهای charAt، آن موقعیتی در رشته می باشد که سعی در بررسی آن دارید. در اینجا قصد داریم به کاراکتری در موقعیت 4از رشته ی email_address برسیم. مجددا شمارش از 0 شروع می شود، درست مانند substring.

یک استفاده ی مفید از charAt گرفتن یک حرف از یک رشته متغیر میباشد که توسط یک یوزر تایپ شده و سپس به یک متغیر مجزای char تبدیل شده است. برای مثال می توانستید از یوزر بخواهید که Y تایپ کرده و ادامه دهد و یا یک N تایپ کرده و خارج شود. نگاهی به این کد داشته باشید:

آموزش جاوا

نمی توانیم برای دریافت یک حرف مجزا و ذخیره در یک متغیر char، مستقیما از گروه Scanner استفاده کنیم. بنابراین از متود next( ) برای گرفتن رشته ی بعدی استفاده می کنیم که یوزر وارد کرده است. یک next integer، next long، next double و حتی next Boolean وجود دارد. اما هیچگونه next char وجود ندارد. ( به یاد داشته باشید که یک متغیر char یک عدد Unicode را به عنوان یک عدد صحیح ذخیره می کند.)

میتوانیم از charAt برای گرفتن یک کاراکتر از هر رشته ای که یوزر وارد می کند استفاده کنیم، حتی اگر یوزر یک حرف مجزا وارد کرده باشد:

 
char aChar = aString.charAt( 0 );

تمام آنچه می گوییم عبارت است از " گرفتن کاراکتر در موقعیت 0 در رشته ای به نام رشته ی aString و سپس ذخیره ی آن در متغیر aChar"

ما یک عبارت IF برای تست کردن آنچه در متغیر aChar می باشد، اضافه کرده ایم. ( به اسافاده از علامت نقل قول انفرادی (‘) در اطراف حرف Y دقت داشته باشید.)

 

آموزش متد equals در جاوا

می توانید شباهت دو رشته را با یکدیگر چک کنید. به این منظور از متود equals در جاوا استفاده کنید. دز اینجا کد مربوط به آن را مشاهده می کنید:

آموزش جاوا

در این کد سعی داریم شباهت دو آدرس ایمیل را بررسی کنیم. دو خط اول دو متغیر string را تنظیم می کنند، برای هر آدرس ایمیل یک متغیر. سومین خط یک متغیر Boolean برقرار می کند. این به این خاطر است که متود equals مقدار true یا false را بازمی گرداند. چهارمین خط جایی است که در آن از متود استفاده می کنیم:

1
isMatch = email_address1.equals( email_address2 );

بین پرانتزهای متود equals، رشته ای را قرار می دهید که سعی دارید آن را بررسی کنید. رشته ی دیگر قبل از متود تساوی قرار می گیرد. جاوا به شما می گوید که آیا این دو یکسان هستند یا نه (true or false). عبارت IF این موضوع را بررسی می کند.

به هرحال متود equals فقط آبجکت ها را مقایسه می کند. این برای رشته ها خوب می باشد، زیرا آنها نیز آبجکت می باشند. اما نمی توانید برای مقایسه ی متغیرهای int از متود equal استفاده کنید. برای مثال این کد منجر به بروز خطای زیر خواهد شد:

1
2
3
4
5
int num1 = 12;
int num2 = 13
Boolean isMatch = false;
 
isMatch = num1.equals(num2);

متغیر int نوع اولیه ی داده می باشد و نه یک آبجکت. شما می توانید نوع داده ی int را به یک آبجکت بازگردانید، گرچه:

1
2
int num1 = 12;
Integer num_1 = new Integer(num1);

در اینجا متغیر int با نام num1 به یک آبجکت عدد صحیح برگردانده شده است. به استفاده از کلمه ی کلیدی new دقت کنید. بین پرانتزهای Integer، نوع اولیه ی داده ی int را قرار می دهید که قصد تغییر آن را به یک آبجکت دارید.

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

آموزش متد Substring در جاوا

یک متد واقعا مفید برای شما متود substring نامیده می شود. این متود به شما اجازه می دهد تا یک متن را از متن دیگر جدا سازید. برای مثال در برنامه ی فوق در آدرس ایمیل خود می توانیم پنج کاراکتر آخر را از کل آدرس جدا کرده و بررسی کنیم که آیا co.uk است یا نه.

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

"Bill Gates"

حروف "Ga" از "Gates" را با "Bi" از "Bill" جابه جا سازیم تا لغت "Bites" را بسازیم. بنابراین "Bi" از "Bill" با "Ga" از "Gates" جابه جا خواهد شد تا لغت "Gall" را بسازد. نام جدید چاپ شده "Gall Bites" خواهد بود.

ما از substring در قسمت بیشتر این برنامه استفاده خواهیم کرد. Substring به این صورت کار می کند:

1
2
3
4
String FullName = "Bill Gates";
String FirstNameChars = "";
 
FirstNameChars = FullName.substring( 0, 2 );

در مورد "Bill Gates" برای جستجو یک رشته تنظیم می کنید. رشته ای که سعی در جستجوی آن دارید، بعد از یک علامت تساوی قرار می گیرد. بعد از یک نقطه (dot)، نام متود، substring، را تایپ کنید. دو روش برای استفاده از substring وجود دارد و تفاوت در اعداد بین پرانتزها می باشد. در کد فوق دو عدد 0 و 2 را داریم. این به این معناست که گرفتن کاراکترها در موقعیت 0 در رشته آغاز می شود و وقتی دو عدد دارید، این فرایند متوقف می شود. این دو کاراکتر بازگردانده می شوند و در متغیر FirstNameChars قرار می گیرند. اگر می خواهید درست در انتهای رشته قرار بگیرید، کافیست کار زیر را انجام دهید:

1
String test = FullName.substring( 2 );

این بار بین پرانتزهای substring تنها یک عدد داریم. اکنون جاوا از کاراکتر دو در رشته ی FirstName آغاز خواهد کرد و سپس کاراکترها را از موقعیت 2 درست در انتهای رشته می گیرد.

یک برنامه ی جدید آغاز کنید تا این برنامه را امتحان کنید. یک خط چاپ به انتهای کد خود اضافه کرده و کد شما نیز باید مانند زیر باشد:

آموزش جاوا

وقتی که برنامه اجرا می شود، پنجره ی Output باید شبیه به تصویر زیر باشد:

آموزش جاوا

بنابراین متود substring به ما اجازه ی گرفتن دو کاراکتر اول نام "Bill" را داده است.

برای گرفتن دو کاراکتر اول، یک 0 و یک 2 بین پرانتزهای substring داشتیم. ممکن است تصور کنید برای گرفتن "Ga" از "Gates" می توانستیم این کار را انجام دهیم:

1
= FullName.substring(5, 2);

بعد از همه ی اینها هنوز دو کاراکتر می خواهیم. فقط این بار 5 به جاوا می گوید که از "G" در "Gates" آغاز کنید. ( اولین موقعیت در یک رشته موقعیت 0 می باشد و نه 1). بنابراین از موقعیت 5 در این رشته آغاز کرده و دو کاراکتر را بگیرید.

به هرحال اجرای آن کد منجر به بروز خطا خواهد شد. این به این حاطر است که دومین عدد بین پرانتزهای substring به معنای تعداد کاراکترهایی که می خواهید بگیرید نیست، بلکه به معنای موقعیت نهایی در رشته می باشد. با مشخص کردن 2، به جاوا می گوییم که در کاراکتری در موقعیت 2 از رشته به اتمام برسد. از آنجایی که نمی توانید از موقعیت 6 به عقب بازگشته و به موقعیه 2 بروید، خطایی دریافت می کنید.

( نکته: اگر شمارش را در رشته ی "Bill" از 0 شروع کنید، ممکن است تصور کنید که موقعیت 2 حرف "l" می باشد و حدس شما درست است. اما substring قبل از کاراکتر در آن موقعیت آغاز می کند و پس از آن.)

بنابراین برای گرفتن "Ga" از "Gates" می توانید مانند زیر عمل کنید:

1
FullName.substring( 5, FullName.length( ) - 3 );

اکنون دومین عدد طول رشته منهای 3 کاراکتر می باشد. طول رشته تعداد کاراکترهایی است که آن رشته دارد. "Bill Gates" دارای 10 کاراکتر شامل فاصله، می باشد. اگر سه کاراکتر را کنار بگذارید، 7 کاراکتر خواهید داشت. بنابراین ما به substring می گوییم که در کارامتر 5 شروع شده و در کاراکتر 7 به پایان برسد.

این برنامه برای افرادی با نام "Bill Gates" به درستی کار می کند. اما اگر نام شما "Billy Gates" می بود، این برنامه به درستی کار نمی کرد. بنابراین کد فوق کاراکتر فاصله به علاوه ی حرف "G" را می گیرد که به هیچ وجه کاراکترهای مورد نظر ما نیستند. ما می خواهیم که برنامه با هر دو نامی که وارد می شوند، کار کند. بنابراین باید کمی زیرک تر باشیم.

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

برای اشاره به موقعیت فاصله می توانیم از indexOf استفاده کنیم.

1
int spacePos = FullName.indexOf(" ");

برای تعیین کاراکتر فاصله، می توانید یک فاصله بین دو نماد نقل قول (") قرار دهید. این کاراکتر پس از پرانتزهای indexOf قرار می گیرد. مقدار بازگشت داده شده یک عدد صحیح خواهد بود که موقعیت اولین رویداد از کاراکتر فاصله در رشته ی FullName می باشد.

این تمرین را می توانید با اضافه کردن خط فوق به کد خود امتحان کنید: برای چک کردن Output یک خط چاپی اضافه کنید:

آموزش جاوا

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

آموزش جاوا

بنابراین در این رشته فاصله در موقعیت 4 می باشد. ما می توانیم از این واقعیت برای گرفتن دو کاراکتر اول از "Gates" یا در واقع هر نام دوم دیگری استفاده کنیم. به جاوا می گوییم که از اولین کاراکتر بعد از فاصله آغاز و در دو کاراکتر بعدی به اتمام برساند.

1
FullName.substring( spacePos + 1, (spacePos + 1) + 2)

بنابراین دو عدد بین پرانتزهای substring عبارتند از:

1
spacePos + 1, (spacePos + 1) + 2

ما می خواهیم که از اولین کاراکتر بعد از فاصله آغاز کنیم (space + 1) و دو کاراکتر بعد از این موقعیت به اتمام برسانیم که به این شکل می باشد: (spacePos + 1) + 2

خطوط زیر را به کد خود اضافه کنید (خطوطی که هایلایت شده اند. متود جدید substring در دو خط قرار می گیرد، اما شما اگر تمایل داشته باشید می توانید روی یک خط قرار دهید.):

آموزش جاوا

وقتی که برنامه را اجرا می کنید، پنجره ی Output مانند زیر خواهید بود:

آموزش جاوا

بنابراین اکنون ما "Bi" از Bill و "Ga" از Gates را داریم. آنچه اکنون باید انجام دهیم گرفتن بقیه ی کاراکترها از دو نام و سپس جابه جایی آنها می باشد.

مجددا می توانیم از substring برای گرفتن بقیه ی کاراکترها از نام اول استفاده کنیم:

1
2
3
String OtherFirstChars = "";
OtherFirstChars = FullName.substring( 2, spacePos );
System.out.println( OtherFirstChars );

و همچنین کاراکترهای باقیمانده از نام دوم:

1
2
3
4
5
String OtherSurNameChars = "";
OtherSurNameChars = FullName.substring((spacePos + 1) + 2,
FullName.length() );
 
System.out.println( OtherSurNameChars );

به اعداد بین پرانتزهای substring دقت کنید. برای گرفتن دیگر کاراکترهای نام اول، اعداد عبارتند از:

1
2, spacePos

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

1
(spacePos + 1) + 2, FullName.length( )

(spacePos1 + 1) + 2 موقعیت شروع سومین کاراکتر از دومین نام می باشد. ما می خواهیم که در طول رشته به پایان برسانیم که بقیه ی کاراکترها را دریافت خواهیم کرد.

خطوط های لایت شده ی زیر را به کد خود اضافه کنید:

آموزش جاوا

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

آموزش جاوا

اکنون تمام قسمت های نام را داریم. برای اتصال آنها به یکدیگر، می توانیم از الحاق (concatenation) استفاده کنیم:

آموزش جاواآموزش جاوا

می توانیم از خطوط چاپی رها شویم و از یک یوزر بخواهیم که نام اول و نام دوم را وارد کند. در اینجا برنامه ی جدید را مشاهده می کنید ( تنها افزایش برای ورودی صفحه کلید می باشد که قبلا از آن استفاده کرده اید):

آموزش جاوا

وقتی برنامه را اجرا می کنید و نام و نام خانوادگی را وارد می کنید، پنجره ی Output باید مانند تصویر زیر باشد:

آموزش جاوا

البته باید چند برنامه ی بررسی خطا نیز اضافه کنیم. اما خواهیم پذیرفت که یوزر می تواند یک نام و یک نام خانوادگی با یک فاصله بین آنها وارد کند. در غیر اینصورت برنامه با شکست مواجه می شود. 

 

  بازگشت به فهرست موضوعی: " آموزش گام به گام زبان شرین برنامه نویسی جاوا  "

سورس کد نوت پد به زبان جاوا

سورس کد نوت پد به زبان جاوا، امکاناتی مثل cut،copy و Past و قابلیت تنظیم رنگ متن را دارا می باشد که خیلی نکات خوب و آموزنده ای رو ارائه میدهد. 

دانلود برنامه :Source-code-for-notebook-in
حجم :15KB
منبع : سایت sourceiran