LoginSignup
1
3

More than 5 years have passed since last update.

forEach練習(その1:forEach文→forEachメソッドに書換)

Last updated at Posted at 2018-04-27

4/27:ご指摘頂き記述を正しいものに修正いたしました。
(for文→forEach文、forEach文→forEachメソッド)

簡単な処理で練習!

forEachメソッドに慣れる為、forEach文の処理を書き換えてみます。

Before

まずはforEach文のソース。

OtamesiFizzBuzz.java
package oasobi;

import java.util.ArrayList;

/**
 * 練習。
 *
 */
public class OtamesiFizzBuzz {

    public static void main(String[] args) {
        OtamesiFizzBuzz2 main = new OtamesiFizzBuzz2();
        main.execute();
    }

    // 実行
    public void execute() {
        // 準備
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 1 ; i < 16 ; i++) {
            list.add(i);
        }

        // 回してみる
        for(int i : list) {
            outputFizzBuzz(i);
        }
    }

    // 引数が3で割りきれるならFizz、5で割りきれるならBuzz、両方で割り切れるならFizzBuzzを出力
    // どちらでも割り切れないなら"どっちでもないよー!"
    private void outputFizzBuzz(int value) {
        if (value%3 == 0 && value%5 == 0) {
            System.out.println(value + ":FizzBuzz");
        } else if (value%3 == 0 && value%5 != 0) {
            System.out.println(value + ":Fizz");
        } else if (value%3 != 0 && value%5 == 0) {
            System.out.println(value + ":Buzz");
        } else {
            System.out.println(value + ":どっちでもないよー!");
        }
    }
}

■実行結果
1:どっちでもないよー!
2:どっちでもないよー!
3:Fizz
4:どっちでもないよー!
5:Buzz
6:Fizz
7:どっちでもないよー!
8:どっちでもないよー!
9:Fizz
10:Buzz
11:どっちでもないよー!
12:Fizz
13:どっちでもないよー!
14:どっちでもないよー!
15:FizzBuzz

After

これをforEachメソッドで書き直してみます。

OtamesiFizzBuzz2.java
package oasobi;

import java.util.ArrayList;

/**
 * 練習その2。
 *
 */
public class OtamesiFizzBuzz2 {


    public static void main(String[] args) {
        OtamesiFizzBuzz2 main = new OtamesiFizzBuzz2();
        main.execute();
    }

    // 実行
    public void execute() {
        // 準備
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 1 ; i < 16 ; i++) {
            list.add(i);
        }

        // 回してみる
        list.forEach(this::outputFizzBuzz);
    }

    // 引数が3で割りきれるならFizz、5で割りきれるならBuzz、両方で割り切れるならFizzBuzzを出力
    // どちらでも割り切れないなら"どっちでもないよー!"
    private void outputFizzBuzz(int value) {
        if (value%3 == 0 && value%5 == 0) {
            System.out.println(value + ":FizzBuzz");
        } else if (value%3 == 0 && value%5 != 0) {
            System.out.println(value + ":Fizz");
        } else if (value%3 != 0 && value%5 == 0) {
            System.out.println(value + ":Buzz");
        } else {
            System.out.println(value + ":どっちでもないよー!");
        }
    }
}

■実行結果
1:どっちでもないよー!
2:どっちでもないよー!
3:Fizz
4:どっちでもないよー!
5:Buzz
6:Fizz
7:どっちでもないよー!
8:どっちでもないよー!
9:Fizz
10:Buzz
11:どっちでもないよー!
12:Fizz
13:どっちでもないよー!
14:どっちでもないよー!
15:FizzBuzz

同じ結果になりました。

forEachメソッドに引数をひとつ取るメソッドを渡すということが何となく分かった気がします。
ちょっとすっきり。

1
3
3

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
3