LoginSignup
1
1

More than 3 years have passed since last update.

メソッドを解説してみた

Last updated at Posted at 2020-09-10

初めに

  • この記事を開いてくれてありがとうございます.
  • 教え方が下手な自分がなんとかまとめたものなので,多めに見てください.
  • 要望,指摘あればどんどん書いてください.
  • それでは,長らくのお付き合いお願いします.

そもそもメソッドとは

10人のテストの平均点、最高点、最低点を表示してください。

java=Question_11.java
package Question_04;

public class Question_11 {
    public static void main(String[] args) {
        int[] english = {98,80,78,85,65,86,90,94,70,92};
        int high = english[0];
        int low = english[0];
        int avg = 0;
        for(int i = 0;i < english.length;i++) {
            if(high <= english[i]) {
                high = english[i];
            }else if(low >= english[i]){
                low = english[i];
            }
            avg+=english[i];
        }
        avg/=english.length;
        System.out.println("平均点:"+avg+"点");
        System.out.println("最高点:"+high+"点");
        System.out.println("最低点:"+low+"点");
    }
}

  • 上記のブログラムは以下のようなmainメソッド1つのメソッド構成になっています.
  • このプログラムではmainのメソッドに 「変数宣言」「計算部分」「結果出力」 の動作すべてが書き込まれているということになります.
  • 変数宣言(mainメソッド):テストの点数を格納
  • 計算部分:テストの点数を比較
  • 結果出力:テストの点数を表示
  • mainメソッド1つでもいいのですが,もし,大きなプログラムを書く場合に,数千行という行数になってしまい管理がとても大変です.
  • そこで,「変数宣言」「計算部分」「結果出力」 を分けようということで,メソッドという考え方を使用します.

どのような基準でメソッドを分けるのか.

  • 「行数が増えると大変だからメソッドを分けるのか」という漠然とした理解を得られたところで,どのように分けていくか解説します.
  • まず,プログラムを大きく分けると以下のように分けられます.

変数宣言部分

  • 変数宣言部分では,使用する変数に値を格納している動作です.
java=Question_11.java
int[] english = {98,80,78,85,65,86,90,94,70,92};//englishに10人分の点数を格納
int high = english[0];//最高点を比較するための変数を宣言
int low = english[0];//最低点を比較するための変数を宣言
int avg = 0;//平均点を算出するための変数を宣言

計算部分

  • 計算部分では,点数の比較を行い,最高点,最低点,平均点を算出します.
java=Question_11.java
for(int i = 0;i < english.length;i++) {//10人分の点数を比較するために10回(人数分)ループ
    if(high <= english[i]) {//最高点を選別
        high = english[i];
    }else if(low >= english[i]){//最低点を選別
        low = english[i];
    }
    avg+=english[i];//平均点を算出するために点数の合計を格納
}

結果出力部分

  • 結果出力部分では,問題文であるように,「表示してください」の動作を行っています.
java=Question_11.java
System.out.println("平均点:"+avg+"点");
System.out.println("最高点:"+high+"点");
System.out.println("最低点:"+low+"点");

実際どのようなプログラムになるのか

java=Question_11.java
package Question_05;

public class Test {
    public static void main(String[] args) {
        int[] english = {98,80,78,85,65,86,90,94,70,92};
        int highscore = english[0];
        int lowscore = english[0];
        int avgscore = 0;
        int highend = high(english,highscore);
        int lowend = low(english,lowscore);
        int avgend = avg(english,avgscore);
        display(highend,lowend,avgend);
    }
    public static int high(int[] english,int highscore) {
        for(int i = 0;i < english.length;i++) {
            if(highscore <= english[i]) {
                highscore = english[i];
            }
        }
        return highscore;
    }
    public static int low(int[] english,int lowscore) {
        for(int i = 0;i < english.length;i++) {
            if(lowscore >= english[i]){
                lowscore = english[i];
            }
        }
        return lowscore;
    }
    public static int avg(int[] english,int avgscore) {
        for(int i = 0;i < english.length;i++) {
            avgscore+=english[i];
        }
        avgscore/=english.length;
        return avgscore;
    }
    public static void display(int highend,int lowend,int avgend) {
        System.out.println("平均点:"+avgend+"点");
        System.out.println("最高点:"+highend+"点");
        System.out.println("最低点:"+lowend+"点");
    }

}


- このように分けることができます.

メソッドを分けることができるのは分かったが,引数や,戻り値って何?

  • メソッドを分けたことによって変数宣言したものは,メソッド内でしか,呼び出すことができません.
    • 例:mainメソッドでint x = 0;とコードを書いても,highメソッドでSystem.out.println(x);のように使用してもxの値を表示することはできません.
    • つまり,変数宣言してもメソッド内でしか使用することができない.
  • なので,引数や,戻り値を使って値を呼び出します.

引数や,戻り値を使う理由

  • 変数宣言(mainメソッド)で宣言した点数格納用のenglishや,点数を比較するためのhighscoreなどの変数は計算部分で使用するために宣言したものです.
  • なので,引数として,これらの変数を参照します.そして,計算結果を戻り値として,変数宣言に戻します.こうすることで,mainメソッドで計算結果を扱うことができます.
  • 同様に,出力結果を出力するためには,計算結果が必要です.
  • なので,引数として,計算結果を先ほど戻り値として返した変数宣言から参照します.
  • これらの動作によって出力結果を出力することができます.

最後に

  • お付き合いいただきありがとうございました.
  • 質問や要望があればどんどん書いてください.
1
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1