広告 Java プログラミング 入門

新米プログラマーによるJava入門-その8(おみくじ)

2020年7月20日

今までに書いてきた内容を用いて、簡易的なおみくじを作ってみましょう。
では早速やっていきましょう!

おみくじプログラムの流れ

まずは、おみくじをどういう流れでやっていくかの説明ですね。
動作の流れはこんな感じです。

  1. 自分の名前を入力
  2. おみくじを引く回数を入力
  3. プログラムによって"乱数"を生成
  4. if文やswitch文を用いて条件分岐
  5. 条件に一致したおみくじの値を表示する

今回新しく登場したのは「入力」と「乱数」です。
おみくじを作る前に各処理を先に説明しますね。

入力処理

入力処理はコンソール上にキーボードからの入力を行えるようにする処理です。
入力処理を行うにはInputStreamReaderScannerを使い必要があります。
今回は「Scanner」を使っていこうと思います。「InputStreamReader」については別の記事にまとめようと思います。
では早速例を見てみましょう。

public class Main{
    public static void main(String[] args){
        System.out.print("名前を入力してください>>>");
        String name = new java.util.Scanner(System.in).nextLine();
        System.out.print("好きな整数を入力してください>>>");
        int num = new java.util.Scanner(System.in).nextInt();
        System.out.println("私の名前は"+name+"です。\n好きな数字は"+num+"です。");
    }
}

これで入力ができるようになります。まるまるコピペして構いませんので実行して実際に入力してみてください。

さて、このプログラム内の「nextLine()」と「nextInt()」ですが使い分けている理由があります。

  • nextLine() ...... 文字列の入力を受け取る時
  • nextInt() ...... 数字の入力を受け取る時

こんな感じです。
さて上のプログラムですが、いちいち「java.util.Scanner」と書くのは面倒ではありませんか?面倒ならどうすれば良いか......
インポートしましょう
!クラスの前に記述すれば少し短縮できます。

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        System.out.print("名前を入力してください>>>");
        String name = new Scanner(System.in).nextLine();
        System.out.print("好きな整数を入力してください>>>");
        int num = new Scanner(System.in).nextInt();
        System.out.println("私の名前は"+name+"です。\n好きな数字は"+num+"です。");
    }
}

以上です。こんな感じにJavaにはインポートすることでプログラムを短縮できることがたくさんあります。

これで入力処理については終わりです。

乱数

乱数」って何?という人はいなさそうですが、簡単に言うと「ランダムに生成された数字」です。
では早速プログラムを書いていきましょう。今回は最初から必要なものはインポートしていきます。

import java.util.Random;

public class Main{
    public static void main(String[] args){
        Random rand = new Random();
        int randomNum = rand.nextInt(100);
        System.out.println(randomNum);
    }
}

このプログラムを実行すると数字がランダムで一つ出力されます。
この乱数の範囲は「rand.nextInt(100)」であらわされており、この場合は「0~100」となります。実行するたびに出力される数字が変わると思います。
仮に乱数の範囲を「100~150」にする場合は.......

import java.util.Random;

public class Main{
    public static void main(String[] args){
        Random rand = new Random();
        int randomNum = rand.nextInt(50)+100;
        System.out.println(randomNum);
    }
}

rand.nextInt(50)+100」ここですね。
乱数を0以外から開始する場合はその分だけ加算することで指定することができます。
今回の場合は「+100」なので100~の乱数となっています。

乱数については以上です。
さあ、いよいよおみくじを作っていきましょう。

おみくじを作ってみよう

今回のおみくじは「大吉・中吉・小吉・凶」の4つが出るおみくじにします。
まず、大まかでいいので確立を決めましょう。

  • 大吉 ...... 20%
  • 中吉 ...... 30%
  • 小吉 ...... 40%
  • 凶  ...... 10%

私はこんな感じにしました。次は乱数の範囲を決めましょう。
私の場合は切りの良い数字を使っているので「0~10」の範囲でやります。
(11%とか36%といった確率の場合は0~100で良いと思います。)

  • 大吉 ...... 20%(0,1)
  • 中吉 ...... 30%(2,3,4)
  • 小吉 ...... 40%(5,6,7,8)
  • 凶  ...... 10%(9)

カッコ内の数字が出たら対象の値を出力します。
まずは、プロジェクトの作成をして下さい。プロジェクト名は自由ですが決めるのが面倒な場合は「Fortune」で良いです。
プロジェクトを作成したらクラスを作成してください。クラス名も指定はしませんが面倒な人は「Main」で良いと思います。そうしたらまずはここまで書いてください。

public class Main {
    public static void main(String[] args){
        //ここに処理を書く
    }
}

このページでやってきたScannerとRandomクラスをインポートしましょう。

import java.util.Scanner;
import java.util.Random;

public class Main {
    public static void main(String[] args){

    }
}

次はRandomクラスの変数の生成と入力処理を書いていきます。

import java.util.Scanner;
import java.util.Random;

public class Main {
    public static void main(String[] args){
        int num = 0; // 乱数を入れるための変数
        int count = 0; // おみくじを引く回数を入れるための変数
        String name = null; // 入力した名前を入れるための変数
        Random rand = new Random();
        System.out.print("名前を入力してください>>");
        name = new Scanner(System.in).nextLine();
        System.out.print("おみくじを引く回数を入力してください>>");
        count = new Scanner(System.in).nextInt();
    }
}

ここからは前回までにやってきた繰り返しと条件分岐の出番です。
一気に書いちゃいますね。

import java.util.Scanner;
import java.util.Random;

public class Main {
    public static void main(String[] args){
        int num = 0; // 乱数を入れるための変数
        int count = 0; // おみくじを引く回数を入れるための変数
        String name = null; // 入力した名前を入れるための変数
        Random rand = new Random();
        System.out.print("名前を入力してください>>");
        name = new Scanner(System.in).nextLine();
        System.out.print("おみくじを引く回数を入力してください>>");
        count = new Scanner(System.in).nextInt();
        System.out.println(name+"さんが"+count+"回おみくじを引いた結果は......");
        for(int i = 0; i < count;i++){
            num = rand.nextInt(10);
            switch (num){
                case 0:
                case 1: System.out.println("大吉!!!");
                        break;
                case 2:
                case 3:
                case 4: System.out.println("中吉!!");
                        break;
                case 5:
                case 6:
                case 7:
                case 8: System.out.println("小吉!");
                        break;
                case 9: System.out.println("凶");
                        break;
            }
        }
    }
}

プログラムらしいですね!!
これを実行するとそれっぽく動いてくれます。できると楽しくなってきませんか?
(そうでもない……?)
これでプログラミングの初歩的な部分に軽く触れることができましたね。
ここからはもっと深くやっていきますよ。
お楽しみに!

-Java, プログラミング, 入門
-,