![配列表紙](https://assets.st-note.com/production/uploads/images/18720143/rectangle_large_type_2_9d9ce209ecbcf3a09f611bd434c0ba89.png?width=1200)
Java入門@配列を利用してランダムにジャンケンの手をコンピュータに出させる
私のアウトプットも兼ねてプログラミングの基本でもある配列について書こうと思います。
一応有料にしていますが、全部読めます。
少しでも参考になったり、勉強になったりしたら、「安い教科書代くらい」だという気持ちとして購入してくれるとかなり嬉しいです。
簡単なプログラミングを作りながら説明しますので参考になれば幸いです。
配列の他にもランダムに数値を出す関数の説明も進めながら行いたいと思います。
プログラミングは一つ一つの処理の塊と、その組み合わせによって様々な処理を行っています。今回の配列とランダム関数、そしてif文を利用すればコンピュータとジャンケン勝負できるようになりますので、興味のある方は是非進めてみて下さい。
今回はとりあえず配列の部分だけの記述となりますのでご了承のほどお願いします。
if文の簡単な使い方は下記にまとめていますので是非ご覧ください。
▽Java入門@If文でジャンケンの手を判別させる
・https://note.com/ganga_1/n/n91b12df2d51f
★このnoteの主な目的
・[配列]文を覚える
・ランダムに数を出力できるようにする
・配列とランダムを組み合わせてランダムにジャンケンの手を出させる
★このnoteの主な対象者
・[配列]をいまいち理解してない方
・javaの参考書の購入を考えている方
★目次
▽はじめに
1.配列
▼代入の仕方
▼配列番号を理解する
2.ランダム関数
▼出力される乱数 0.0〜0.1
▼キャスト(変換)して代入
3.配列+乱数(課題)
▼ランダムジャンケン出力
4.まとめ
▽はじめに
今回もeclipsでの説明となります。eclipsでの環境設定は後ほど書いていこうと思います。今回は私のアウトプットも兼ねてますので、この記事を読んでくれている方、eclipsの設定はこちらにはありませんのでご了承のほどお願いします。
また、プロジェクトの作成、パッケージの作成、クラスの作成も出来ると前提として書いていこうと思います。
プロジェクトの作成、パッケージの作成、クラスの作成ができない方は、こちらにまとめてますのでこちらから進めてみて下さい。
▽Javaプロジェクト作成の流れ
https://note.com/ganga_1/n/na17b3be54fff
また、Pythonがいい!!と思っている人へPython入門も書いてますのでこちらもよろしくお願いします。簡単な英単語張を作りながら学べますのでオススメです。
▽だれでもできるPython入門
https://note.com/ganga_1/n/n08cf2a6aebd4
では、本題に参ります。
1.配列
変数に複数のデータを一括で入れることができます。これを[配列]といいます。配列は番号で管理されているので使い勝手が良いです。
ではクラスを作成してmainを書いて下さい。私は[Janken]としました。
分からない方はこちらを確認してみて下さい。
▽Javaプロジェクト作成の流れ
https://note.com/ganga_1/n/na17b3be54fff
![画像1](https://assets.st-note.com/production/uploads/images/18650511/picture_pc_9ac19eb89297ae54649a0239e4888e51.png)
▼代入の仕方
配列の代入方法は少し変わります。普通の変数と比較しながら確認しましょう。
▽普通の代入方法
・数値 →int 変数名 = 数字;
・文字列 →String 変数名 = "文字列";
▽配列の代入方法
・数値 →int[] 変数名= {数字,数字,数字,数字,数字,......};
・文字列 →String[] 変数名= {"文字列","文字列","文字列",.....};
では、書いてみましょう!!
String[] hands = {"グー", "チョキ", "パー"};
[ ]←これは配列の宣言で、
{ }(波カッコ)で配列にしたい要素を囲い、
,(カンマ)で区切ることで代入します。
これで[hands]に"グー", "チョキ", "パー"が代入されました。
▼配列番号を理解する
配列は左から番号で管理されています。まずはそれを覚えましょう。
![01文字列と配列の代入](https://assets.st-note.com/production/uploads/images/18654685/picture_pc_e858f792f3ce2f52926ffa075b85ecbd.png?width=1200)
管理番号は左から[0]で始まり、右へ[1]、[2]へと増えていきます。
この[0]から始まるということをしっかり覚えていてください。
次は出力してみます。
System.out.println(gu);
System.out.println(hands[0]);
両方[グー]が出力させればOKです。
![02グーの出力](https://assets.st-note.com/production/uploads/images/18700940/picture_pc_304b24fa269e4b94ecca1073d69b6274.png?width=1200)
他にもhands[1]、hands[2]を出力してみてください。[チョキ][パー]と出力されればOKです。
出力方法分からない方は下記書いてますので参考にしてみてください。
▽Javaプロジェクト作成の流れ
https://note.com/ganga_1/n/na17b3be54fff
これで全ての手を出力する準備ができました。変数[gu][choki][pa]の3行は配列と区別するために書いただけなので、消してOKです。
次は配列を利用してランダムに出力する準備を行いたいと思います。
2.ランダム関数
ここからは一旦ジャンケンからはなれて考えていきたいと思います。
新しくクラスとmainを作成してください。私は[Random]としました。
忘れた方は下記参考にしてみて下さい。
▽Javaプロジェクト作成の流れ
https://note.com/ganga_1/n/na17b3be54fff
![03randomメイン](https://assets.st-note.com/production/uploads/images/18701605/picture_pc_9dfafda6e3c146ee1980dc92070cd924.png?width=1200)
まずはJavaに予め準備されているランダムに数を生成してくれる関数を使って変数に代入してみましょう。
▼出力される乱数 0.0〜0.1
▽乱数の生成方法
・Math.random();
これで乱数を生成します。ここで注意点がありますので確認しましょう。
▽Math.random()使用時の注意点
・実行すると0.0〜1.0未満の範囲で生成される。
上記書いてある通り、1.0未満の小数点月の数値が生成されます。
今まで書いてきたnoteは
数値で整数のint型、文字列のString型でした。
今回は小数点を扱いますのでdoubul型となります。全note含めて3種類目ですので復習もかねて確認しましょう。
▽型の確認
・文字列 →String
・整数 →int
・小数点 →double
では小数点のdouble方を乱数で生成して代入して出力してみましょう。
double d = Math.random();
System.out.println(d);
変数[d]に代入しそのまま出力するコードになります。結果は下記のようになります。1.0未満の小数点が出てくるのが分かると思います。
![04乱数生成出力-1](https://assets.st-note.com/production/uploads/images/18715707/picture_pc_60c80aa92c202973394a5d729b5a5f07.png?width=1200)
何回かやってみてください。毎回結果が違ってくるはずです。
小数点ではジャンケンに使えないので小数点(double)から整数(int)へと変換します。
▼キャスト(変換)して代入
この変換することを[キャスト]と言います。ではキャストするコードを書いていきます。とりあえず意味は深く考えないで、int型にしたんだな。と思えばOKです。
int i = (int)(Math.random() * 10);
System.out.println(i);
![04乱数生成出力-2](https://assets.st-note.com/production/uploads/images/18716582/picture_pc_cebf4dcc850956fd6da1e8b63d868ad3.png?width=1200)
整数での乱数生成の流れを確認しましょう。
▽流れ
①Math.random()に欲しい数字の間までの数字をかける
※その数字は含まず、今回は10をかけたので0〜9の間となる
②(int)で生成した小数点以下の数字を切り捨ててキャストする
③int型の変数に代入する
つまり[ i ]は0〜10未満のint型の整数を持っています。
ではコレで何ができるのでしょうか。話しを配列に戻します。
配列の管理番号を覚えていますか?もう一度画像を載せておきます。
![01文字列と配列の代入](https://assets.st-note.com/production/uploads/images/18716937/picture_pc_6d5ab0b672020bef0d17ce5dbe36a2cd.png?width=1200)
このhands[0]とかhands[1]とかhands[2]です。この[ ]の中にランダムで生成した整数を打ち込めば、ランダムでジャンケンの手を出力してくれます。
では[Janken]のクラスに戻りましょう!!
3.配列+乱数(課題)
使わないコードはコメントアウトか、削除しましょう。
//←でその一行をコメントアウトすることが出来ます。
![05コメントアウト](https://assets.st-note.com/production/uploads/images/18717305/picture_pc_b6d8575e4073a4e156dc8c08838709e3.png?width=1200)
この[Janken]クラスに先ほどの乱数を生成させるコードを入れてランダムに出力するジャンケンを完成させてください。
▽ヒント
・生成した乱数にかけるのは[10]ではなく[3]
※配列名.lengthで配列に入っているデータ数が分かるのでそれをかけてもOK。今回の場合は(hands.length)
・出力する配列の管理番号を乱数を生成した変数に変える
ここまできたらあとは組み合わせるだけです。全部このnoteに書いていますので自力でやってみてください。
5.まとめ
ここではあえてランダムにジャンケンの手を出力させるコードを出すのは控えたいと思います。
自分で考えて、思い通りに動いた時、何とも言えない爽快感が癖になります。是非ともパーの処理とエラーの処理を書いていただいて味わっていただければと思います。
次回はキーボードからの入力で代入を行うnoteを書く予定をしていますのでまた読んでくれると嬉しいです。
そして、いいnoteだと思ったら500円でも入れてくれると励みになります。
最後まで読んでいただきありがとうございました。
ここから先は
¥ 500
この記事が気に入ったらサポートをしてみませんか?