ちょうどPPAPがCMで流れてたので。
enumを定義
enum PPAP_STATE {
UNKNOWN,
PEN,
PINEAPPLE,
APPLE,
PPAP;
static PPAP_STATE getState(PPAP_STATE state, int talking) {
if (state == UNKNOWN && talking == 0) {
return PEN;
} else if (state == PEN && talking == 1) {
return PINEAPPLE;
} else if (state == PINEAPPLE && talking == 2) {
return APPLE;
} else if (state == APPLE && talking == 0) {
return PPAP;
} else {
return UNKNOWN;
}
}
}
処理部分
enumのおかげで本処理はすっきり!
PPAP_STATE state = PPAP_STATE.UNKNOWN;
Random random = new Random();
while (true) {
int talking = random.nextInt(3);
Log.i("talk: ", new String[]{"ペン", "パイナップル", "アップル"}[talking]);
state = PPAP_STATE.getState(state, talking);
if (state == PPAP_STATE.PPAP) {
Log.i("finish: ", "Pen Pineapple Apple Pen!");
break;
}
}
結果
追記
(本当は、 PPAP_STATE.getState()
の処理を switch文
でやりたかった...)
switch(int a, int b) {
case (0, 0):
// do
case (1, 1):
// do
default:
// do
}
Javaでこんな形でかけるのかがわからなくて断念した...
GitHub Gist