2012-03-10 13 views
1

私の主なメソッドにPersonの配列があり、その配列をGameクラスのPlayGame()メソッドに渡す必要があります。あなたはどうやってそれをしますか?mainメソッドからjavaの別のメソッドに配列を渡すにはどうすればよいですか?

あなたはそれを行うためのパラメータを使用する必要が
public class RollOff { 
     public static void main(String[] args) throws IOException{ 

     int numPeople; 
     int a; 


     System.out.println("How many people will play the game?"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String s = br.readLine(); 
     numPeople = Integer.parseInt(s); 

     if ((numPeople >= 2) && (numPeople <= 10)) { 
      Person[] p = new Person[numPeople]; 
      for (a = 0; a < numPeople; a++) { 
       p[0] = new Person(a); 
      } 

     } 

    } 
} 

public class Game extends RollOff{ 
    int numPeople; 
    int a; 


    void PlayGame() { 

    } 

} 
+0

小型コメント:a)の変更pを忘れてはいけない[0] =新しい人(A); 〜p [a] =新しいPerson(a)へ。 b)Java命名規則では、最初の小文字のメソッドに名前をつけなければなりません:playGame() – MikhailSP

答えて

3

void playGame(Person[] p){ 
    ... 
} 

今すぐ単にplayGameは静的メソッドではありませんので、あなたはそれを静的にする必要がありますいずれか

public static void main(String[] args){ 
    ... 
    game.playGame(p); 
} 

を呼び出しますそして、Game.playGame(p)を呼び出すか、あなたはゲームのインスタンスを作成する必要があります:gameの呼び出しに続いてGame game = new Game()、上記の例のように。

1
public void play(Person[] person) { 

// code 
} 

// The call 
play(person); 
0

メインクラスは、ゲームのインスタンスを作成し、コンストラクタに選手の配列を渡す必要があります。

private Person[] players; 

public Game(Person[] players) { 
    this.players = players; 
} 

Game game = new Game(p); 
game.playGame(); 

ゲームのクラスは、このように、次のフィールドとコンストラクタを持つべきです

メソッドは、Javaの命名規則に従うように小文字で始まり、そしてあなたのループがバグを持っている必要があることを注意:それは常に代わりinitialiの配列の最初の要素を設定し、すべての要素をzingします。

最後に、変数に意味のある名前を与える:playersは、はるかに読みやすいp以下です。

1

あなたは、単にPlayGameに人の配列パラメータを追加することができます

void playGame(Person[] personArray){//logic of the method} 

次に、あなたがしなければならないすべては、クラスのゲームの新しいインスタンスを作成することによって、mainメソッドからplayGameメソッドを呼び出している

Game game = new Game(); 
game.PlayGame(p); 

ここで「p」は、あなたの人の列です。

関連する問題