スッキリわかるjava入門に記載されている問題についてです。
「聖職者は「祈る」(pray)という行動をとる事ができ、自分のMPを回復できます。回復量は祈った秒数にランダムで0~2ポイントの補正を加えた量です。(3秒祈ったら回復量は3〜5ポイントのいずれか)。ただし最大MPよりも回復することはありません。
そこで、「pray()」というメソッドを追加してください。このメソッドは引数に「祈る秒数」を指定することで、戻り値として「実際に回復したMPの量」を返します」
この問題に対して
public class Cleric {
String name;
int hp = 50;
int MAX_HP = 50;
int mp = 10;
int MAX_MP = 10;
public void selfAid() {
System.out.println(this.name + "はセルフエイドを唱えた!");
this.hp = this.MAX_HP;
this.mp -=5;
System.out.println("HPが最大まで回復した。");
}
public int pray(int sec) {
System.out.println(this.name + "は" + sec + "秒間天に祈った!");
int recover = new Random().nextInt(5) + sec;
int recoverActual = Math.min(this.MAX_MP - this.mp, recover);
this.mp += recoverActual;
System.out.println("MPが" + recoverActual + "回復した。");
return recoverActual;
}
}
と解答にはコードが書かれています。
このコードのうち、
なぜ
int recoverActual = Math.min(this.MAX_MP - this.mp, recover);
は、
int recoverActual = new Math.min(this.MAX_MP - this.mp, recover);
ではないのかが分かりません。
int recover = new Random().nextInt(5) + sec;
の様にnewが必要なのではないでしょうか?
初歩的な質問で申し訳ありませんが、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー