はじめに
少し前に流行った「ズンドコキヨシ」を久しぶりにこちらの記事で見つけたので、私もJavaを使ってズンドコキヨシを作ってみることにしました。
ついでにfor文を封印して、StreamAPIの復習をしてみました。
作成したコード
- 「ズン」もしくは「ドコ」のいずれかを格納した長さ5のListを作ります。
-
Stream.generate()
を使う場合、Streamが無限に続かないようにlimit
を付ける必要があります。
-
- Listを半角スペースでJoinした結果が「ズン ズン ズン ズン ドコ」になるまで、
do~while
のループを繰り返します。- 必ず1回はループに入るので、最初に終了条件を判定する
while
ではなく、最後に終了条件を判定するdo~while
を使いました。
- 必ず1回はループに入るので、最初に終了条件を判定する
- 最後に「キヨシ!!」を付け足して標準出力します。
ZundokoStream.java
package zundoko;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ZundokoStream {
public static void main(String[] args) {
Random rnd = new Random();
String[] zunDoko = { "ズン", "ドコ" };
String songLyrics = "";
do {
List<String> phrases =
Stream.generate(() -> zunDoko[rnd.nextInt(2)])
.limit(5)
.collect(Collectors.toList());
songLyrics = String.join(" ", phrases);
} while (!songLyrics.equals("ズン ズン ズン ズン ドコ"));
System.out.print(songLyrics);
System.out.println(" キヨシ!!");
}
}
実行結果
ズン ズン ズン ズン ドコ キヨシ!!