みなさんこんにちは、一星零哉です。
今回作成、解説していくのはJavaで実装する「おみくじ」アプリです。
標準入力の値を読み取り、その値に応じて処理を分岐させておみくじの結果を標準出力させるだけのアプリケーションなので、勘のいい方であれば要件を読んだだけで作れちゃうかもしれません。
さっそく作っていきましょう!
要件と設計
このアプリケーションの要件は「標準出力に”y”と入力されたときに、おみくじの結果を標準出力する」ことです。
処理の流れを見ていきましょう。
- アプリ実行
- おみくじを引くかどうかのメッセージと、引きたい場合の操作を指示するメッセージを標準出力する
- “y”以外が入力された場合
- アプリの実行終了
- “y”が入力された場合
- 乱数を生成する
- 生成した乱数を10倍する
- 小数点以下を切り捨てる ← 吉凶判定の数値
- 数値に応じて、表示する吉凶を設定する
- 「今日の私の運勢は〇〇です。」のメッセージにになるようにフォーマットする
- メッセージを標準出力する
- “y”以外が入力された場合
- 実行終了
以上です!
簡単に図にするとこんな感じです。

乱数生成や小数点の切り捨てはもしかしたら見たことがないかもしれないですが、条件分岐の判定を2度実行するだけの簡単なアプリケーションです。
実装
まずは以下のように実装してみました。
package SampleOmikuji;
import java.util.Scanner;
public class SampleOmikuji {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
System.out.println("おみくじを引きますか");
System.out.println("引く場合は\"y\"を入力してください。");
Scanner scanner = new Scanner(System.in);
String inputChar = scanner.nextLine();
if(!inputChar.equals("y")) {
return;
}
int ftn = (int) Math.round(Math.random() * 10);
String rst;
switch(ftn) {
case 0:
rst = "大吉";
break;
case 1:
rst = "吉";
break;
case 2:
rst = "中吉";
break;
case 7:
rst = "末吉";
break;
case 8:
rst = "凶";
break;
case 9:
rst = "大凶";
break;
default:
rst = "小吉";
}
String msgTemple = "今日の運勢は %sです。";
String msg = String.format(msgTemple, rst);
System.out.println(msg);
}
}
50ステップ程度のクラス1つだけです。
GitHubのリンクもおいておきますね。
GitHub - IchihoshiReiya/Omikuji at develop
Contribute to IchihoshiReiya/Omikuji development by creating an account on GitHub.
アプリケーションを実行すると、以下のメッセージが標準出力されます。

“y”を入力してEnterを押下すると。。。

今日の運勢が出力されます!

次回
次回からはこのプログラムの解説をしていきます。
ここまでお読みいただきありがとうございました。
また次の記事でお会いしましょう!
コメント