• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:回答が分かりません。どなたかお助けを。)

Diceクラスを継承することなくRandomクラスを利用してサイコロを実装する方法

このQ&Aのポイント
  • JavaのDiceクラスは、Randomクラスを継承してサイコロの役割を果たします。しかし、DiceクラスはRandomクラスのnextIntメソッド以外はUnsupportedOperationExceptionをスローしており、相続の拒否しているため実装方法としては適切ではありません。
  • 代わりに、Randomクラスを継承するのではなく、委譲を使用してDiceクラスを実装することができます。これにより、Randomクラスのすべてのメソッドが利用可能になり、サイコロの役割を正しく果たすことができます。
  • Mainクラスでは、Diceクラスのインスタンスを2つ生成し、10回ずつサイコロを振った結果をコンソールに出力しています。このようにDiceクラスを正しく実装することで、サイコロの振る舞いを再現することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • hofchan
  • ベストアンサー率62% (17/27)
回答No.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 クラスから同じように動けば 問題ないかと思います

yuminose
質問者

お礼

回答くれた方々ありがとうございます。 まだまだ初心者なので、ちょくちょく質問など書き込む機会が あると思います。 よろしくお願いします。

その他の回答 (1)

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.1

// java.util.Random への参照を持つ  private Dice rand = new Random();  public int nextInt() {   return rand.nextInt(6) + 1;  }

yuminose
質問者

補足

すみません。質問した者です。 下記の // java.util.Random への参照を持つ  private Dice rand = new Random();  public int nextInt() {   return rand.nextInt(6) + 1;  } は、全体的にどの様に記述すればいいのですか? (どの様に記述し直せばいいのでしょうか。)

関連するQ&A