新・明解 Java 入門 演習 13-3 解答
Hello, Terminal!swaponQです!
今回は演習 13-3 に取り組んでいこうと思います。
- 演習 13-3
ジャンケンの《プレーヤ》を表す抽象クラスを定義せよ。そのクラスから以下のクラスを派生すること。
・人間プレーヤクラス(出す手をキーボードから読み込む)
・コンピュータプレーヤクラス(出す手を乱数で生成する)
・Player.java
public abstract class Player{ public abstract String toString(); public void print(){ System.out.println(toString()); } }
・HumanPlayer.java
import java.util.Scanner; public class HumanPlayer extends Player { Scanner stdIn = new Scanner(System.in); private int num; public HumanPlayer() { System.out.print("グー…1/チョキ…2/パー…3 :"); int hn = stdIn.nextInt(); this.num = hn; } public int getNum() { return num; } public String toString() { if(num == 1){ return "あなた:グー"; } if(num == 2){ return "あなた:チョキ"; } if(num == 3){ return "あなた:パー"; } else{ return "エラー: 指定された値を入力してください"; } } }
・ComputerPlayer.java
import java.util.Random; public class ComputerPlayer extends Player{ Random rand = new Random(); private int num; public ComputerPlayer() { int cn = rand.nextInt(3); this.num = cn; } public int getNum() { return num; } public String toString() { if(num == 0) { return "コンピュータ:グー"; } if(num == 1) { return "コンピュータ:チョキ"; } else { return "コンピュータ:パー"; } } }
・Janken.java
class Janken { public static void main(String[] args){ System.out.println("じゃんけんスタート"); HumanPlayer hp = new HumanPlayer(); hp.print(); ComputerPlayer cp = new ComputerPlayer(); cp.print(); int hn = hp.getNum(); int cn = cp.getNum(); if ((hn == 1 && cn == 1) || (hn == 2 && cn == 2) || (hn == 3 && cn == 0)) System.out.println("あなたの勝ちです!"); else if ((hn == 1 && cn == 2) || (hn == 2 && cn == 0) || (hn == 3 && cn == 1)) System.out.println("あなたの負けです…"); else System.out.println("あいこです。"); } }
・実行結果
じゃんけんスタート グー…1/チョキ…2/パー…3 :2 あなた:チョキ コンピュータ:グー あなたの負けです…
演習 13-4 がありますが、Javadocの話なので省略します。
以上で「第13章:抽象クラス」は終了です。お疲れ様でした!
次回からは「第14章:インタフェース」です。
参考書のメインの部分は次回で終わりですね!あと一歩頑張りましょう!
Goodbye, Terminal… swaponQでした!