カテゴリー
Java

メソッドを使って星座プログラムを作ろう

「if文で星座を判定しよう」で星座を出力させるプログラムを書きましたが、これをメソッドを使って書き替えてます。
この章はメソッドの学習ですので、BufferedReaderについては「キーボードの入力の値を受け取ろう」の章で説明します。1111111この例は星座の判定を judgeメソッドに任せています。
このように判定の部分をif文で長く書くのではなく、メソッド化することでコンパクトになりプログラムがすっきり書けます。
少しずつ分解しながら、説明していきます。
〇以下の箇所は「if文で星座を判定しよう」で説明したので、説明は省略します。1

〇メソッドを呼び出しているのは以下の箇所です。
judge(month, birthDay);
judge(month, birthDay);の中のmonthのデータがjudgeメソッドの引数int monthに入り、birthDayのデータがint dayに入ります。1

〇 judgeメソッド内の1の要素は星座名で配列を作成しています。
この配列内の要素は山羊座から順番通りに並んでいます。
決して、適当に並んでいるわけではありません。

〇judgeメソッド内の1には各星座の月の末日を配列に入れています。
judgeメソッド内の1には1月から12月までの末日を配列に入れています。

〇次に以下の箇所の説明をします。1 例えばmonthに1が入り、dayに19が入っているとします。
そうすると1の部分はiが0の時にifの条件式がTRUEになりますので、以下の入れ子のif文の条件式の判定に入ります。1 「day <= day1[i]」の中のdayには19が入り、1周目の1にはday1の0番目の要素である19が入っていますので、条件式はTRUEになり、nameにはnames配列の0番目の要素であるやぎ座が入ります。
例えばdayに19ではなく23が入っていると仮定すると1はFALSEになるので、1の条件式の判定に入ります。
ここで1にはday2の0番目の要素である31が入っていますのでTRUEになり、name には以下の条件に該当する星座が入ります。1 この中のiには1周目では0が入っていますので1で余りを求めると1になりますので1となり、みずがめ座が入ることになります。
1の箇所の説明をしますと例えばmonthが1で、day が23の場合には11になりFALSEになるので、else ifのブロックに入りますが、1月は やぎ座と水瓶座しかなく、やぎ座ではないのならば水瓶座しかないのでnames配列を1つ進めるために1で1を足しています。つまり、該当する以下の余りの数字がnames配列の添え字になり、その該当するデータがnameに入ります。1

〇もし、judgeメソッドのmonthに100、dayに100などif文の条件式にマッチしないデータを入れるとnameには何も入りません。
そうなった場合にはnameには初期値のカラ文字1が入っているので、if文の条件式にマッチして「間違い」が出力されます。
staticについては「staticについて知ろう」の章で説明します。1

次はmainメソッドの外で変数を宣言するとどうなるかについて説明します。
name変数はmainメソッドの外で宣言しているので、プログラムのどこからでも使用することが出来ます。
このような変数をグローバル変数と言います。
プログラム全体で変数を使いたい場合にはメソッドの外で宣言をしてください。1
これまでメソッド内で使っていた変数はローカル変数と呼ばれています。
ローカル変数とはメソッド内で宣言して、メソッドの中に使用が限定されている変数です。
この例ではname変数を judgeメソッド内で使っているので、mainメソッド内でname変数の値を使うためにはグローバル変数にする必要があります。

〇最後にnameに入った星座を次の箇所で出力します。1 結果の一例は以下の通りです。1

カテゴリー
Java

メソッドについて知ろう

この章ではメソッドについて説明します。
これまでたくさん使ってきたmainメソッドもメソッドの1つなので、mainメソッドの説明から始めます。
これまでmainメソッドは詳しく説明しませんでした。
その理由はプログラムの基礎を理解していないとメソッドの説明はできないからです。
ではmainメソッドについて説明します。
mainメソッドは以下の通り定義します。1 Javaのプログラムはmainメソッドから始まる決まりになっています。
mainは他の名前で代用することができませんので、必ず必要な名前になります。
publicはクラスの外からのアクセスすることができることを意味します。
publicについては「クラスについて知ろう」の章で説明します。
つまり、publicの付いたメソッドはどこからでも利用することが出来ると言うことです。
staticは クラスのオブジェクトを作ることなくアクセスすることができると言う意味です。
staticについては「staticについて知ろう」の章で、オブジェクトについては「クラスについて知ろう」の章で詳しく説明します。
String args[]はコマンドラインで入力した時に、この場所に引数というデータを入れることが出来るのですが、String args[]という形式なので文字列の配列が入ります。
ここはStringしか定義できません。
つまり、int型にしたりはできません。
コマンドライン入力については「コマンドライン入力について知ろう」の章で説明します。
voidはメソッドが戻り値を返す必要が無い時に使います。
voidも戻り値も後で詳しく説明します。
mainメソッドはプログラムの中で最初に実行され、戻り値を返す必要がないので、voidになっています。
mainメソッドは必ず書かなくてはいけないメソッドなので、少し特殊ですが、他にもメソッドは自身で作ることが出来ます。
メソッドとは与えたデータ(引数)に基づいて決められた処理を行い、戻り値を返す機能を持っています。
例えば消費税を自動で計算するメソッドを自分で作りたいとします。
その場合、メソッドは商品金額に消費税率を掛けた処理をして、その結果を返すという機能を持ったメソッドを作ることになります。
もう一例挙げます。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
このSUM関数のような機能を自身でメソッドに書いていきます。

では実際に例を見てみましょう。
初めにメソッドを使わない例を作成して、メソッドの例と較べます。111 この例は3つの数字の平均を求める記述を行なっていますが、このように何度も同じ処理を書くのは面倒ですし、3つの数字の平均ではなく、3つの数字の合計を求める仕様に変更となったときに、変更点のすべてを書き直さなくてはいけません。
この例はまだ短いプログラムなのでいいですが、これが何百行あった時にすべて書き直すことは大変な作業になります。
このような時にメソッドを使うと便利です。
では、先ほどの例をメソッドを使って書き直します。
111 何度も同じ動きをする文を1つにまとめると言うのがメソッドの役割の一つです。
メソッドを使わない例では3か所あった同じ処理を以下のようなメソッドを使うと1箇所で済みます。
同じ文を何回も書かなくてもいいので、プログラムの可読性が良くなります。1ではメソッドの作り方について説明します。メソッドを作成する基本形は以下の通りです。1 メソッドの基本構文の詳細はこの後すぐに説明しますので今は形だけを覚えておいてください。
スペースの都合で1の部分が2行目に書かれていますが、通常はこの例のようにメソッド名の横に書いてください。
また、1の部分を「仮引数」と言いますが、引数とはメソッド内で使われるデータです。
そして、このメソッドを実行したい時には1 のように記述すればheikinメソッドを呼び出して実行することが出来ます。
つまり、以下の基本構文でメソッド内の内容を実行します。1 引数とはメソッドに渡すデータの事ですが、引数が複数ある場合には1のように1を使って、データ間を区切ります。
このメソッドの呼び出しのカッコの中にあるデータ1「実引数」と言います。
実引数は別に変数である必要はなく、1のようなリテラルでも問題ありません。
リテラルとは「99」や「”猫”」のようなデータそのものを意味します。
では先ほどの例でメソッドの流れについて説明します
実引数のxの値はメソッド本体の1にセットされ、yの値は1に、zの値は1にセットされることになります。
このように変数の値を渡すことを値渡しと言います。
そして、そのセットされた変数は実際のメソッドの中で使われることになります。1 また、実引数と仮引数の変数名が一致していなくても問題ありません。
ここで注意点して欲しいことがあるのですが、実引数と仮引数の型と順番と数は一致させてください。
例えば次のような引数の数の不一致はいけません。1 そして、仮引数がint型で実引数がString型と言うような型の不一致もできません。
しかし、仮引数と実引数の型が違っても、以下のように小さい型の実引数から大きい型の仮引数への自動変換は出来ます。1 この例の場合はint型の99と96をdouble型の1に自動変換してくれます。
次にメソッドの利点について説明します。
メソッドを作成する便利な点は例えば3つの数字の平均を求めるメソッドから3つの数字の合計を求めるメソッドにプログラムを変更する際にも以下のようにメソッドの一部分を変えるだけで簡単に変更できるということです。1
次にメソッドの基本構文について詳しく説明します。1 〇アクセスレベルとは 変数やメソッドに対してどのような場所からアクセスすることが可能であるかを指定することですが、ここではpublicを指定しています。
publicとはどこからでもアクセス可能であると覚えておいてください。
他にもprivateやprotectedなどを指定できますがpublicも含めてクラスの章で詳しく説明します。
static修飾子については「staticについて知ろう」の章で説明します。
〇戻り値型とはメソッドの実行結果を次の例で説明するreturnで呼び出し側に戻すことができるのですが、その戻す値のデータ型を記述します。
戻す値がない時はvoidを指定します。
〇メソッド名はshowTemperatureのように小文字から始まり、単語の区切り目は大文字であることが慣習になっています。
このように書かなくてもエラーにはならないので、自身で解りやすい名前を付けましょう。
またメソッド名にはgetとかshowとか動詞が使われることが多いです。
次はメソッドを実行した時に発生した値を呼び出し元に返す方法について説明します。
例を見てみましょう11 値を呼び出し元に返す構文は次の通りです。
先ほど説明したメソッドの例と違うところはreturnがあるか、無いかの違いです。1 計算結果を呼び出し元に返したい時には1という形式で書きます。
戻り値とは文字通り、呼び出し元に返したいデータです。
この例では1と書いています。
このreturnで返す戻り値がどの型なのかを指定するのが基本構文の「戻り値型」です。
この例では返す値がint型なので「戻り値型」もintになっています。
戻り値を返さないのであればvoidと書きます。1 戻り値である変数dは呼び出し元に戻って、変数gに代入されます。11 上の例は結果を変数に入れて、returnで返していますが、以下の例のようにreturnに直接、式を書いて返してもいいです。11 このような変数をローカル変数と言います。
例えばheikinメソッドのa,b,c,dの変数はheikinメソッド内でしか使用することは出来ません。
ですので、他のメソッドでa,b,c,dの変数名を使用しても、まったく別の変数になるので問題ありません。
この例でもmainメソッドとheikinメソッドでは同じ変数名a,b,cが使われていますが、全く問題ありません。
では次に進みます。
これまではmainメソッドから他のメソッドを呼び出していましたが、mainメソッド以外のメソッドから他のメソッドを呼び出すことも出来ますので、次の例を見てください。111 この例ではmainメソッドからmenseki1メソッドを呼び出していますが、さらにmenseki1メソッドから、menseki2メソッドを呼び出しています。
このような呼び出し方も出来るので覚えておいてください。
では説明を始めます。
mainメソッドの中でmenseki1メソッドを呼び出しています。
menseki1メソッド内では1の結果を1に代入しています。
さらにmenseki1メソッド内でmenseki2メソッドを呼び出して1に結果を代入しています。
最後にdとeを足したものをfに代入して、その値をreturnで呼び出し元に返して変数gに入れています。
結果は以下の通りです。1
次は配列をメソッドに渡す方法について説明します。
では例をみてみましょう。11 このメソッドは配列の要素の中で一番大きい数の値を求めるメソッドです。
〇配列をmaxメソッドに渡すには1のように引数に配列を書きます。

〇配列を渡しているのでメソッドの仮引数は1のように配列で受け取ります。

〇比べるための一番初めの基準の数値は1なので1の値である2になります。
そして、for文の中で以下のような順番でループして大きさを比べています。
1周目の11となり、1の方が大きいのでtop1には1が入ります。
2周目の11となり、1の方が大きいのでtop1には2が入ります。
3周目の11となり、1の方が大きいのでtop1には3が入ります。
4周目の11となり、1の方が大きいのでtop1には4が入ります。
5周目の11となり、1の方が大きいのでtop1には5が入ります。
最終的にtop1には5が入ります。
そして、1の箇所でtop1の値がworld1に代入されます。
number[world1]のworld1には一番大きい配列のインデックス番号が入っているので、1となり、89が出力されます。
次の例は配列の要素をメソッドに渡して、その値をメソッド内で変更した時に元の配列はどうなるかについて説明します。11 結果は「444444」です。
配列をメソッドに渡すときには値渡しではなく、参照渡しになります。
変数をメソッドに渡す場合は値渡しです。
呼び出し元の配列numberをrt配列に渡していますが、このrt配列をkakikaeメソッド内で変更するとnumber配列の値まで書き替えることができます。
これが参照渡しになります。
変数を渡す値渡しの場合はメソッド側でその変数の値を書き替えることが出来ません。
例ではnumber配列の要素である1をkakikaeメソッドの中のrt配列に渡してすべて4を代入していますが、このようにメソッド側で配列の値を変えることで、呼び出し元の配列の要素もすべて1に変更されます。
次の例では呼び出し元の変数をメソッド側で書き替えることができるか(書き替えることは出来ませんが)見てみましょう。11 kakikae(x,y,z);の箇所で引数をkakikaeメソッドに送っています。
これは値渡しで渡しています。
そして、kakikaeメソッドで以下のように4を代入しています。
a=4;
b=4;
c=4;
ここで変数に4を代入しても、呼び出し元のx 、y、z の値は変更されず1のままです。
つまり、値渡しの場合はメソッド側でその変数の値を書き替えることが出来ません。1 その場合には呼び出し側の引数もカラにしてメソッドを呼び出します。1

カテゴリー
Java

do-while文について知ろう

この章ではdo-while文について説明します。
while文は繰り返し文が実行される前に条件式を判定しますがdo-while文は繰り返し文が実行された後に条件式を判定します。
while文は初めの条件がFALSEの場合は繰り返し文を1回も実行することはありませんが、do-while文は最低1回は繰り返し文を実行します。1 では例をみてみましょう。1 初めに1を実行して、a++でインクリメントしてから、1の条件判定に入りますので最低1回は繰り返し処理文を実行します。1

カテゴリー
Java

while文の中でのbreakの使い方を知ろう

この章ではwhile文の中でのbreak の使い方について説明します。
while文の中で強制的に繰り返し文を終了させたい時にbreakを使用します。
では例をみてみましょう。11 では説明に入ります。
〇 iに1を代入します。

〇 (i <= 10)の条件を判定します。
iは1でTRUEなので、whileの処理文を実行します。

〇 iは1で、if文の条件式はTRUEではないので、そのままif文はスルーします。

〇次の文を実行して「ループ1回目」を出力します。1

〇 i++で1を足して、iは2になります。

〇(i <= 10)の条件を判定します。
iは2でTRUEですので、whileの処理文を実行します。

〇 iは2で、if文の条件式はTRUEではないので、そのままif文はスルーします。

〇 次の文を実行して「ループ2回目」を出力します。1

〇 i++で1を足して、iは3になります。

〇 (i <= 10)の条件を判定します。
iは3でTRUEなので、whileの処理文を実行します。

〇 3回目のループで初めて、if文の条件部分がTRUEになるので1を実行します。
そして、この後にbreakがあるので、ここでwhile文を抜けます。

カテゴリー
Java

while文について知ろう

この章ではwhile文について説明します。
while文はfor文と同じく、条件式がTRUEの場合は何度でも繰り返し文を実行します。1 では例をみてみましょう。1 順を追って説明しましょう。
〇初めにiに初期値1を代入します。
while( i < 6 )の条件式をif文と同じようにTRUEかFALSEで判定します。
もし条件部分がTRUEであるならば、1を実行します。
FALSEであるならば1は実行されません。
1周目のiは1で6未満なので1を実行して、1を出力します。
そしてi++の箇所で1を加えてiは2になります。

〇 2周目のiは上の1番で1が足されているので2になっていますが、次に1の条件判定に入ります。
2は6未満なのでTRUEになり、1を実行して、2を出力します。
そしてi++の箇所で1を加えiは3になります。

〇 3周目のiは上の2番で1が足されているので3になっていますが、次に1の条件判定に入ります。
3は6未満なのでTRUEになり、1を実行して、3を出力します。
そしてi++の箇所で1を加えiは4になります。

〇 4周目のiは上の3番で1が足されているので4になっていますが、次に1の条件判定に入ります。
4は6未満なのでTRUEになり、1を実行して、4を出力します。
そしてi++の箇所で1を加えiは5になります。

〇 5周目のiは上の4番で1が足されているので5になっていますが、次に1の条件判定に入ります。
5は6未満なのでTRUEになり、1を実行して、5を出力します。
そしてi++の箇所で1を加えiは6になります。

〇 6周目のiは上の5番で1が足されているので6になっていますが、1の条件判定でfalseになるため、ここで処理を終了します。
このように1の部分がFALSEになるまで繰り返します。
つまり変数iが6以上になりましたらwhile文を終了します。

カテゴリー
Java

forの中のcontinueの使い方を知ろう

この章ではcontinueについて説明します。
continueは現在進行している周回を抜けても、ループ自体は続けたい場合に使います。
では例をみてみましょう。1 では説明を始めます。
1つ
2つ
3つ
を出力した後に次の周回でiが4になりますが、1の条件がTRUEですので、1を実行することなく、つまり「4つ」という文字列を出力することなく、forの先頭に戻ります。
forの先頭に戻りましたら、1の箇所で条件判定をしますが、5はまだ5以下でTRUEなのでループを継続して「5つ」を出力します。
breakと違いループ自体を止めることはしません。

カテゴリー
Java

for文の中のbreakの使い方を知ろう

この章ではfor文の中でif文を使うことと、さらにはfor文の中で強制的に繰り返し文を終了させるbreakについて説明します。
breakは、現在実行中の forやswitchなどの実行を強制的に終了させます。
では例をみてみましょう。1 結果は以下の通りです。
1つ
2つ
3つ
for文のブロックの中にif文が入っています。
このようにfor文にはif文を入れることが出来ます。
この例のif文の意味はbreakを使っているので、もしiが4になったらforループを抜けますよと言う意味です。
ですので、「4つ」を出力することなくループを終了します。
breakはこのように一連の流れを強制的に中止し、ブロックを抜ける時に使用します。breakをするとブロックの中のbreak以降の文は実行されません。

次はforの入れ子の中でbreakを使用する方法について説明します。111 上から2つ目のforの中でbreakを使っていますが、2つ目のforの中でbreakを使った場合、breakで抜けることができるのはbreakのあるfor文、つまり、上から2つ目のfor文だけです。
先頭のfor文は抜けることができないということです。
例の場合はfor文の中のif文の条件部分が3を超えたら、上から2つ目のfor文をbreakするのですが、breakした後はまた先頭の1に戻ってループを繰り返します。
1はif文でbreakしているので表示されません。
つまり、breakをするとブロックの中のbreak以降の文は実行されないと言うことです。
for文の入れ子の場合、内側のfor文の中にあるbreak文はbreak文があるfor文のブロックしか抜けませんが、次の例で一気に外側のブロックを抜ける方法について説明します。11 入れ子になったfor文から抜け出す場合には1という形式でbreak文に指定します。
この例では1の部分です。
ラベル名は特別の意味があるわけではなく、ただの名前ですので自由に決めてください。
次に抜けたいところに1を付けると、そこまで実行位置を移すことが出来ます。
この例では1に位置が移ります。1

カテゴリー
Java

for文の入れ子について知ろう

この章ではfor文の入れ子について学習します。
入れ子とはfor文の中にfor文がある構造です。1 では上の例の説明します。
〇 iに1を代入します。

〇「i<=3」の条件式を判定します。
ここがTRUEであるならば、1 が3回実行されて
1掛ける1=1
1掛ける2=2
1掛ける3=3
と出力されます。
つまり、外側のfor文が1周するごとに中のfor文は3周します。11
〇次にi++に戻りiに1を足します。
ここでiは2になります。

〇そして条件式の判定に入りますが、まだiは2なのでTRUEということになり、1 が3回実行されて
2掛ける1=2
2掛ける2=4
2掛ける3=6
と出力されます。

〇次にi++に戻りiに1を足します。
ここでiは3になります。

〇そして条件式の判定に入りますが、まだiは3なので,TRUEということになり、1 が3回実行されて
3掛ける1=3
3掛ける2=6
3掛ける3=9
と出力されます。

〇次にi++に戻りiに1を足します。
ここでiは4になります。

〇そして条件式の判定に入りますが、iは4で3以下ではないのでFALSEとなり、ここでループは終わりになります。1

次はfor文を使って配列のデータを取り出す方法について説明します。
初めにfor文を使わない例をみてみましょう。1 この例のように今までは1 のように1つ1つデータを足していましたが、for文を使うと以下のように簡潔に書くことが出来ます。11 「配列名.length」という構文で配列の要素数を取得出来ます。
この例の要素数は3ですので、その要素数の分だけfor文でデータを取り出します。
goukei +=test[i];を書き換えると1と同じ意味になります。
for文の流れは以下の通りです。
1周目はtest[i]のiには0が入るので、1となり、goukeiに22が代入されます。

2周目はtest[i]のiには1が入るので、1となり、goukeiに45が代入されます。

3周目はtest[i]のiには2が入るので、1となり、goukeiに79が代入されます。
ここで、注意してほしいことがあります。
goukei変数はfor文の外で宣言していますが、i変数はfor文の中で宣言しています。
この違いはブロック内で宣言した変数はブロック内でしか使うことは出来ませんが、外で宣言した変数はfor文の外でも使用することが出来ます。
つまり、以下のようにブロックの中で宣言しているiのような変数は次の例のようにfor文の外で出力することは出来ません。1

次の例は先ほどのfor文の例を書き替えています。11 先ほどの例のfor文は以下の通りです。1 このfor文を書き替えると以下のようになります。1 基本構文は次の通りです。1 図式化しますと以下の通りですが、配列testに入っている要素が順番に変数iに代入されていきます。1 次は2次元配列のデータをfor文で取り出す方法について説明します。11 結果は次の通りです。
1 2 12 3 4 23 5 6 62 7 8 83
2次元配列のデータを取り出すためにはfor文の入れ子を使用します。1 「number.length」では2次元配列の配列数である4を、1ではそれぞれの配列の中に入っている要素数である3を取得できます。
1という形式で各配列に入っている要素の数を取得できます。1111 つまり、外側のfor文が1回ループするごとに、中のfor文は3回転しています。
次の例は2次元配列のすべての値の足し算をしています。111111 結果は「154」になります。
次はある配列を別の配列にコピーする方法について説明します。1 では説明をしていきます。1 =>これが元の配列です。

1 =>そして、aの配列と同じサイズの配列bをもう一つ作ります。
サイズは1で得ることが出来ます。

そして下のfor文を使って1のデータを1にコピーします。1 最後にfor文で1の内容を出力します。11

カテゴリー
Java

for文について知ろう

この章では繰り返し文であるfor文について説明します。
何回も同じ処理を繰り返す必要があるときに、for文を使えば簡潔に記述することができます。
同じような処理を何度も繰り返すプログラムを書く場合、以下のように何度も同じ処理を書くのは面倒ですし、間違いも多くなりがちです。
では例をみてみましょう。1 このように同じ文を何度も書くのは面倒ですね。
そこで、forを使用すると繰り返し文を簡単に書くことが出来ます。
以下がfor文の基本構文です。1 forが最初に実行される時には1から始まります。
初期値式とは条件式を判定するときの初めの変数です。
初期値式は下の例で言えば1です。
次に初期値式を元に条件式を判定してTRUEであるならば、処理文が実行されることになります。
条件式は下の例で言えば1です。
処理文が実行された後に増減式において、初期値を足したり引いたりする行為を行います。
増減式は下の例で言えば1です。
増減式は1のようにデクリメントの記述もできます。

ではforの例を詳しく説明します。1 結論から言うと猫と言う文字列を3回出力します。
では説明をしていきます。
〇初めにiに初期値の1をセットします。
初期値は1ではなくても自由に決められます。

〇 「i<=3」の条件式を判定します。
ここがTRUEですので1を実行します。
ここで1回目の「猫」を出力します。

〇それからi++で iに1を足し、iは2になります。

〇そしてまた条件式1の判定に入り、iは2ですので、TRUEとなり1を実行します。
ここで2回目の「猫」を出力します。

〇それからi++で iに1を足し、iは3になります。

〇そしてまた条件式1の判定に入り、iは3ですので、TRUEとなり1を実行します。
ここで3回目の「猫」を出力します。

〇それからi++で iに1を足し、iは4になります。

〇そしてまた条件式1の判定に入り、iは4ですので、条件式はfalseになりループを終了します。
では以下の例をfor文で書き替えてみましょう。1 結果は以下の通りです。1 この例の場合は1回まわるごとにiがインクリメントされて1の中のiに代入されます。
条件式は1ですので、iには1から5までが代入されます。

カテゴリー
Java

switch文で占いを作ろう

この章ではswitch文で占いを作成します。1111Math.random()について説明します。
MathとはMathクラスを意味しますが、まだクラスの意味は説明していませんので、形だけを覚えてください。1 Math.random()は0.0以上1.0未満のランダムな値を返しますので、double型の変数で受け取ります。
ではMath.random()の例を見てみましょう。1 結果はその時の出力により毎回違います。1 では今度は乱数を整数で受け取ってみましょう。1 ランダムな値を整数で受け取りたい場合には1 のように1でキャストをして、Math.randomに整数を掛けます。
10を掛けた場合には0から9までの乱数を得られます。
結果はint型変数で受け取ります。
占いの例では7を掛けているので、0から6までの乱数を得ることが出来ます。
キャストについては学習済みですが、復習してみましょう。
基本的には大きい型から小さい型への変換は禁止していますが、どうしても大きい型から小さい型へ変換したい場合はキャスト演算子を使って強制的に型変換を行う方法があります。
この例の場合にはdouble型の数値をint型に変えるので1でキャストします。
キャストする対象が例のような式の場合にはカッコを1のように付けてから、intでキャストします。
では例に戻りますが、kazuには0から6までの整数値がランダムに入ります。1 例えばkazuが0の場合にはunmeiには大吉が入りますので以下の箇所で一致します。1 そして、最後に以下の箇所で出力します。1 占いの結果は毎回違いますので、以下のようになります。1