TxKxZxWx's blog

AWS SAA、Javaの学習

Java学習 9日目 「ランダム」「2次元配列」

昨日の続きから。。

 

・「ランダムなメッセージを表示」

 

例題①:

「入力エリアに、おみくじの出目(例:大吉,中吉,吉,凶)が用意してあります。
おみくじプログラムを作ってください。
おみくじは、標準入力から読み込んだ文字列をカンマで分割して、そのうち1つをランダムに出力します。」

 

入力される値:
大吉,中吉,吉,凶

 

期待する出力値:
大吉,中吉,吉,凶のいずれか

 

 

解答:

import java.util.*;

public class Main {

  public static void main(String args) {

    // 標準入力から1行取得

          Scanner sc = new Scanner(System.in); 

          String line = sc.nextLine();
          // カンマで分割して、配列に代入

          String omikuji = line.split(",");
          // 配列の要素をランダムに選ぶ

          double rand = Math.random() * omikuji.length;

    int num = (int)rand;
          // ランダムに選んだ配列の要素を出力

          System.out.println(omikuji[num]);

    }

}

 

 

 

解説:

まずScannerを使用して標準入力で値を取得する。

その後にsplitで「 , 」で分割してそれぞれ配列に入れる。

ランダムで出力するにはrandomクラスにlengthで得た要素数を掛ける。

 

 

 

 

・「2次元配列」

 

2次元配列とは、「2つのインデックスで要素を指定する配列」のこと。


例えば、

array[1][2] = 100;

 

とすると、インデックスの1,2に対応する要素に100を代入できる。

 

 

多次元配列の用途は以下のようなもの。

 

- RPGのマップ
- 写真・イラストなどのイメージ
- 3D-CGの空間座標
- ゲームの盤面
- 表形式データ

 

 

 

例:

String teams = {{"勇者", "戦士", "魔法使い"}, {"盗賊", "忍者", "商人"}, {"スライム", "ドラゴン", "魔王"}};

System.out.println(teams[0][0]);
System.out.println(teams[0][1]);
System.out.println(teams[0][2]);

 

⬇︎

勇者

戦士

魔法使い

 

 

解説:

二次元配列を作成する場合は最初にString, Intなど配列の要素になるデータの種類を記述して、その後にを記述する。

そしてprintlnで出力する際はインデックスの番号を二つ記述する。

上の場合は最初の[0]でteams配列に入った{"勇者", "戦士", "魔法使い"}を指定。

2番目の[0]で{"勇者", "戦士", "魔法使い"}の中の0番=勇者を指定している。