- ベストアンサー
Diceクラスを継承することなくRandomクラスを利用してサイコロを実装する方法
- JavaのDiceクラスは、Randomクラスを継承してサイコロの役割を果たします。しかし、DiceクラスはRandomクラスのnextIntメソッド以外はUnsupportedOperationExceptionをスローしており、相続の拒否しているため実装方法としては適切ではありません。
- 代わりに、Randomクラスを継承するのではなく、委譲を使用してDiceクラスを実装することができます。これにより、Randomクラスのすべてのメソッドが利用可能になり、サイコロの役割を正しく果たすことができます。
- Mainクラスでは、Diceクラスのインスタンスを2つ生成し、10回ずつサイコロを振った結果をコンソールに出力しています。このようにDiceクラスを正しく実装することで、サイコロの振る舞いを再現することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
// java.util.Random への参照を持つ // Dice と書いていたのは Random に訂正させてください private Rabdom rand = new Random(); public int nextInt() { return rand.nextInt(6) + 1; } -------------------------------------------------- >>>は、全体的にどの様に記述すればいいのですか? 何かの課題のようですね、ですのでヒントだけです @Override public int nextInt() { // サイの目は最大6で、返される値は0~5なので+1した値を返す。 return nextInt(6) + 1; } 元のコードはこれですよね、これは自分自身で 1~6 の乱数を発生させる 処理をしていますが下記コードでは public class Dice { private Random rand = new Random(); public int nextInt() { return rand.nextInt(6) + 1; } 実質は Random インスタンスでの処理ですよね この様な実装にして Main クラスから同じように動けば 問題ないかと思います
その他の回答 (1)
- hofchan
- ベストアンサー率62% (17/27)
// java.util.Random への参照を持つ private Dice rand = new Random(); public int nextInt() { return rand.nextInt(6) + 1; }
補足
すみません。質問した者です。 下記の // java.util.Random への参照を持つ private Dice rand = new Random(); public int nextInt() { return rand.nextInt(6) + 1; } は、全体的にどの様に記述すればいいのですか? (どの様に記述し直せばいいのでしょうか。)
お礼
回答くれた方々ありがとうございます。 まだまだ初心者なので、ちょくちょく質問など書き込む機会が あると思います。 よろしくお願いします。