while文とRandomクラス

スポンサーリンク

こんにちは。「Javaを復習する初心者」です。

今回はwhile文で使ってみました。while文は繰り返し処理を記述するための構文です。for文とは違った書き方をします。繰り返し処理で、擬似乱数値を関数するメソッドjava.util.Random#nextIntを使ったサンプルを作成してみました。

スポンサーリンク

ソースと実行結果

サンプルでどのような処理をしているか、以下にフローを書いてみました。

  1. 変数numを初期値0で宣言する。
  2. 変数numが5でない場合、以下の処理を繰り返す。
    1. numに0から9までのランダムな値を格納する。
    2. 以下の形式でコンソールに文字列を出力する。
      “回数: ” + [繰り返し回数] + “, 値: ” + num

以下は上記フローの実装例です。

ソースコード
package test;

import java.util.Random;

public class HelloWhile {

    public static void main(String[] args) {

        Random random = new Random();
        int num = 0;
        int cnt = 0;
        while (num != 5) {
            num = random.nextInt(10); // 10未満の乱数
            System.out.println("回数: " + ++cnt + ", 値: " + num);
        }

    }

}
結果1回目
回数: 1, 値: 3
回数: 2, 値: 3
回数: 3, 値: 2
回数: 4, 値: 0
回数: 5, 値: 8
回数: 6, 値: 7
回数: 7, 値: 8
回数: 8, 値: 5
2回目結果
回数: 1, 値: 1
回数: 2, 値: 7
回数: 3, 値: 9
回数: 4, 値: 3
回数: 5, 値: 3
回数: 6, 値: 2
回数: 7, 値: 7
回数: 8, 値: 7
回数: 9, 値: 2
回数: 10, 値: 7
回数: 11, 値: 6
回数: 12, 値: 4
回数: 13, 値: 3
回数: 14, 値: 6
回数: 15, 値: 8
回数: 16, 値: 7
回数: 17, 値: 7
回数: 18, 値: 3
回数: 19, 値: 8
回数: 20, 値: 0
回数: 21, 値: 8
回数: 22, 値: 5

解説

while文の構文は以下です。

while文
    while (条件) {
        処理内容;
        ・
        ・
        ・
    }

while文は条件がtrueの場合、中括弧の中の処理を実行します。for文のようにカウンタ変数を使う方法もありますが、今回は乱数の値でループを抜けるかどうか決まるようにしました。今回指定した条件は「num != 5」です。ここで、「!=」は等しくないを表します。もし等しいを表したい場合は、「==」と書きます。while文は条件次第では処理内容が1度も実行されません。必ず1度は実行したい場合、do-while文を使いますが、詳細は省略します。

printlnで回数の表示をしている個所「++cnt」はインクリメントの前置です。式全体の実行前に変数cntに1加算されます。初期値が0のなので最初の出力では1になります。後置「cnt++」の場合、式全体の実行後に1加算されるため、最初の出力が0になってしまいます。

java.util.Randomクラスには乱数を取得するメソッド「int nextInt(int bound)」があります。以下は、java 8 API仕様からの引用です。

修飾子と型
int
メソッドと説明
nextInt(int bound)
この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。

使いたいメソッドの修飾子にstaticが記述されていないならば、そのクラスのインスタンスを生成する必要があります。「new」キーワードを使い変数randomに格納し、random.メソッド名の形式でメソッドを使います。staticメソッドを使う場合はインスタンスは必要なく、クラス名.メソッド名の形式で使うことができます。例えばMathクラスのメソッドabsはstaticなので、Math.abs(-1);という書き方で使います。(引数の絶対値を返却するメソッドです。)

構文
スポンサーリンク
「Javaを復習する初心者」が復習・学習するブログ
タイトルとURLをコピーしました