# ④分岐処理 ## ドローメソッドの作成 解答 ``` public Card draw() { // リストサイズを使用して乱数を発生させる // リストサイズ(カードの枚数)が10なら、0~9の範囲で Random rand = new Random(); int cardIndex = rand.nextInt(cardList.size()); // リストからカードを取得 Card drawCard = cardList.get(cardIndex); // ドローしたカードを削除 cardList.remove(cardIndex); // ドローしたカードを返す return drawCard; } ``` ## 分岐処理 分岐処理には if文 を使用します if文 使用することで、条件を満たした場合のみ処理を行うことができます ### 記述例と構文説明 ``` if( 条件式 ) { 処理 } ``` 上記のように記載することで、括弧()内の条件を満たした場合のみ、 中括弧{}内の処理を行うことができます 条件式は結果が boolean型(true/false)となるように記載します メソッドの戻り値を条件として使用することも可能です (基本的な記述例) ``` int num = 10; if (num <= 10) { // ここはされる } if (num < 10) { // ここは実行されない } ``` (メソッドの戻り値を使用する場合の記述例) ``` public static void main(String[] args) throws Exception { int num = 10; if (isTen(num)) { // 処理される } } public static boolean isTen(int num){ return num == 10; } ``` 上記の num == 10 は、numが10の場合にtureとなる表現です = が一個の時は代入を意味しますが、== と二個連なると一致を判定する演算となるわけです したがって、上記の例ではメソッドをわざわざ呼び出さずとも if文の括弧内の条件式としてそのまま使用しても同じ処理となります [演算子の種類について](https://www.sejuku.net/blog/13030) ## 課題9 ドローメソッドの改修 * drawメソッドに以下の変更を加える * カードが存在しない場合はドローせず、nullを返すようにする * カードが存在しない場合はその旨を表示するようにする