4/27:ご指摘頂き記述を正しいものに修正いたしました。
(for文→forEach文、forEach文→forEachメソッド)
#簡単な処理で練習!
forEachメソッドに慣れる為、forEach文の処理を書き換えてみます。
#Before
まずはforEach文のソース。
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メソッドで書き直してみます。
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メソッドに引数をひとつ取るメソッドを渡すということが何となく分かった気がします。
ちょっとすっきり。