2

私は Java に関してはかなりの初心者です。OOP を多用する兄弟ではなく、大学向けの Js に重点を置いているため、パラメーターを適切に渡すことができません。

「generateMonsterCode」で乱数を生成して「chooseMonster」に渡したいのですが、これを達成する方法がよくわかりません。

/**
 * Randomnly choose a type of monster of varying hp/mp/loot drops
 * @return rndGen
 */
public int generateMonsterCode (){
    Random rndGens = new Random();
    int rndGen = 0;

    for (int i = 1; i < 2; i++) {
       rndGen = rndGens.nextInt(4) + 1;
    }

    return rndGen;
}

/**
 * Define which monster is chosen
 */
public void chooseMonster(){

    switch(rndGen){
        case 1: System.out.println("Monster:" + rndGen);
        case 2: System.out.println("Monster:" + rndGen);
        case 3: System.out.println("Monster:" + rndGen);
        case 4: System.out.println("Monster:" + rndGen);
    }     
}

どんな助けでも大歓迎です!

フィードバックに関する更新

    /**
 * Randomnly choose a type of monster of varying hp/mp/loot drops
 * @return rndGen
 */

public void generateMonsterCode (){
Random rndGens = new Random();
    int rndGen = 0;

    rndGen = rndGens.nextInt(4) + 1;

    chooseMonster(rndGen);

}

/**
 * Define which monster is chosen
 */

private void chooseMonster(int rndGen){

    switch(rndGen){
    case 1: System.out.println("Monster:" + rndGen);
            break;
    case 2: System.out.println("Monster:" + rndGen);
            break;
    case 3: System.out.println("Monster:" + rndGen);
            break;
    case 4: System.out.println("Monster:" + rndGen);
            break;
    }

}

これはおそらくより良いコードプラクティスでしょうか?

4

1 に答える 1

1

パラメータは、メソッド宣言の横の括弧内に配置して指定します。

public void chooseMonster()パラメータを取らないメソッドです。

public void chooseMonster(int i){パラメータとして int を取り、iメソッドのスコープで名前を付けます。

メソッドのパラメーターを指定するときは、呼び出し時に指定した型の変数を渡す必要があります。したがって、 ではgenerateMonsterCode()、乱数を生成した後、単に を呼び出しますchooseMonster(rndgen)

そのメソッド内で、int渡した を次のように参照できます。

i.doSomething();

これは理にかなっていますか? これについてもっと注意深く説明できるかどうか教えてください。ここでは、オブジェクト指向プログラミングの基本的な側面のいくつかに反対しています。将来何らかの役割を果たしたい場合は、これらの概念を理解することが重要です。

参考までに: メソッド宣言の反対側には戻り値の型があります。あなたの場合は void です。つまり、何も返されません。これを構造化する別の方法は、generateMonsterCode()メソッドが int を返すようにすることです。

public int generateMonsterCode(){ 
    .... generate random number
    return rdngen();

メソッドの先頭で呼び出しますchooseMonster()

public void chooseMonster() {
      int i = generateMonsterCode();
      ... do work
}

これは、他の方法よりも必ずしも良いまたは悪いとは限らないことに注意してください。説明のために言及しているだけです。

また、FYI: @supericy は、ランダム生成で使用している for ループについて正しいです。また、おそらくpublicアクセス修飾子の機能と、それが本当に必要かどうかを調べる必要があります (おそらく必要ないでしょう)。ただし、これらの問題は質問の範囲外です。

于 2013-04-22T23:54:34.680 に答える