آموزش عملیات محاسباتی روی آرایه های چند بعدی در جاوا

+1
+30
1394/03/26 0 223 م.مطلبی

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

برای این منظور پروژه ایجاد شده در دروس قبلی را باز کنید و کلاس جدیدی با نام subsun_class_22 به پکیج subsun_package اضافه کنید. و درون آن را بصورت زیر پر نمایید و سپس آن را ذخیره کنید.

package subsun_package;

import java.awt.*;
import javax.swing.*;

public class subsun_class_22 extends JApplet {

          int grades[][] = { { 16, 15, 18, 19 },
                             { 17, 14, 15, 13 },
                             { 18, 19, 17, 20 } };
           int students, exams;
           String output;
           JTextArea outputArea;
          
           public void init(){
                students = grades.length;      // تعداد دانش آموزان
                exams = grades[0].length;
                outputArea = new JTextArea();
                outputArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
                                                            //راست به چپ کردن متن خروجی
                Container container = getContentPane();
                container.add( outputArea );
                output = "جدول نمرات :\n";
                buildString();
                output += "\n\nکمترین نمره \t" + minimum() +
                              "\nبیشترین نمره \t" + maximum() + "\n";
                    for ( int counter = 0; counter < students; counter++ )
                                   output += "\nمیانگین نمرات دانش آموز [" + counter +"]     : "+
                                                   average( grades[ counter ] );
                outputArea.setFont(new Font( "Courier", Font.PLAIN, 12 ) );
                outputArea.setText( output );
     }

     public int minimum()
      {
           int lowGrade = grades[ 0 ][ 0 ];
          
           for ( int row = 0; row < students; row++ )
               for ( int column = 0; column < exams; column++ )

                    if ( grades[ row ][ column ] < lowGrade )
                         lowGrade = grades[ row ][ column ];
               return lowGrade;
     }

     public int maximum()
     {
      int highGrade = grades[ 0 ][ 0 ];

      for ( int row = 0; row < students; row++ )
           for ( int column = 0; column < exams; column++ )

               if ( grades[ row ][ column ] > highGrade )
                     highGrade = grades[ row ][ column ];

           return highGrade;
     }

     public double average( int setOfGrades[] )
     {
          int total=0;

          for ( int count = 0; count < setOfGrades.length; count++ )
               total += setOfGrades[ count ];

          return ( double ) total / setOfGrades.length;
     }

     public void buildString(){
          output += "                              ";
          for ( int counter = 0; counter < exams; counter++ )
               output += "[" + counter + "]      ";

          for ( int row = 0; row < students; row++ ) {
           output += "\nدانش آموز [" + row + "] : ";

           for ( int column = 0; column < exams; column++ )
               output += grades[ row ][ column ] + "      ";
           }
     }
}

همان طور که در بالا مشاهده می کنید یک اپلت نوشته شده است .در ابتدای کار آرایه دو بعدی grades را تعریف کرده و سپس بصورت دستی آن آرایه را مقدار دهی کرده ایم. توجه شود که در این آرایه هر سطر نشان دهنده دانش آموز و هر ستون نشان دهنده درس مورد نظر می باشد. در ادامه این دستورات بگونه ای که مشاهده می شود متغیر های مورد نیز خود را تعریف کرده ایم .

درون متد init ابتدا تعداد دانش آموزان و تعداد دروس به صورتی که مشاهده می شود درون متغیر های students و exams ذخیره شده اند. در ادامه دستورات متد buildString را جهت چاپ عناصر آرایه به صورت یک جدول فراخوانی کرده ایم. در این متد قرار است آرایه به صورت یک جدول سه در چهار مرتب نمایش داده شود .در متد buildString همانگونه که مشاهده می نمایید از 3 حلقه for استفاده کرده ایم . در اولین حلقه for هر کدام از اعداد 0 تا 3 که شماره دروس می باشد درون یک جفت براکت در خروجی نمایش داده می شود . سپس وارد دومین حلقه for  می شویم . همانطور که در دستورات واضح است درون این حلقه یک حلقه for دیگر قرار دارد . حلقه for بیرونی وظیفه مدیریت سطر ها و نیز قرار دادن عبارت "دانش آموز" به همراه شماره آن در خروجی را دارد. با استفاده از حلقه for درونی نمرات دانش آموز برای هر درس نمایش داد می شود . و به این ترتیب رشته خروجی ما ایجاد می شود .

دوباره به متد init بر می گردیم دومین متدی که فراخوانی شده است متد minimum و متد بعد maximum است . با استفاده از این دو متد مقدار مینیمم و ماکسیمم در آرایه نمایش داده می شود. دستورات درون این دو متد ساده می باشد و تنها به توضیحی اجمالی در مورد این متد ها بسنده می کنیم . در متد maximum فرض کرده ایم بزرگ ترین عنصر آرایه درون خانه اول با اندیس صفر قرار دارد. و آن را درون متغیر highGrade قرار می دهیم . حال این مقدار را با دیگر مقادیر درون آرایه مقایسه کرده ایم .در صورتی که مقداری بزرگتر از آن یافت شود آنگاه مقدار بزرگتر درون متغیر highGrade ذخیره می شود و در انتها مقدار متغیر highGrade به عنوان خروجی تابع برگردانده می شود. عملکرد تابع minimum  نیز به روش مشابه maximum است .

متد بعدی که درون متد init فراخوانی کرده ایم متد average می باشد. با استفاده از این متد میانگین نمرات هر یک از دانش آموزان محاسبه می شود این متد داده های ذخیره شده در یک سطر را دریافت می نماید . و سپس بصورتی که مشاهده می نمایید میانگین آنها را محاسبه کرده و در خروجی قرار می دهد .

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

حال زمان مشاهده عملکرد دستورات این اپلت می رسد.فایل subsun_class_22 را در Package Explorer ایکلیپس انتخاب کنید و آن را اجرا کنید.

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

نتیجه اجرای برنامه جاوا

دیدگاه ها (0)

ارسال دیدگاه ها

Image CAPTCHA
حروف نمایش داده شده در تصویر را وارد کنید.