2016-10-06 13 views
-1

私は幸運の車輪を作っています。ユーザーがそこに何人のプレーヤーがいるのかを入力し、forループのコンストラクタが多くのプレーヤーを作ります。私はちょうど彼らがforループで複数の異なる名前のオブジェクトを作る

プレーヤーコンストラクタ

public Player(String n) { 
    money = 0.0; 
    name = n; 
} 

問題

public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 
    int playerAmount = 0; 
    do { 
     if(playerAmount > 5) System.out.println("Thats too many."); 
     System.out.print("How many players(max 5): "); 
     playerAmount = kb.nextInt(); 
    } while(playerAmount > 5 || playerAmount == 1); 

    for(int i = 1; i <= playerAmount; i++) { 
     System.out.print("Player " + i + " name: "); 
     String name = kb.next(); // name for the construction of player 
     Player player1 = new Player(name); // where i want to construct differeing number of different objects 
    } 

} 
+0

オブジェクトの配列が必要です。 –

+0

配列のようなデータ構造にします。 'player1'は各反復の後すぐに失われます。 – Li357

+0

オブジェクトには名前がありません。意味がありません。変数はありますが、オブジェクトを複数の変数に割り当てることができるので、Horace、Bill、Sharonという名前のPlayer変数があり、そのオブジェクトの「名前」はすべて同じオブジェクトに割り当てられています。再び、それは理にかなっていません。重要なのは**参照**と*プロパティ*です。オブジェクトに名前を関連付けるにはオブジェクト(おそらくArrayListまたはHashMap)にアクセスするための参照とオブジェクトのクラスのString nameプロパティを取得します。 –

答えて

0

簡単な解決策は、それぞれを追加することですしたいどのように多くの選手と言うとき、私は、オブジェクトを作成したいのか分かりません新しいプレーヤーをリストに追加:

List<Player> players = new ArrayList<>(); 
for (int i = 0; i < playerCount; i++) { 
    players.add(new Player(kb.next())); 
} 

これは少し複雑かもしれませんが、Java 8 y OUにも、このためのストリームイディオムを使用することができます。

List<Player> players = Stream.generate(kb::next) 
    .map(Player::new).limit(playerCount).collect(Collectors.toList()); 

あなたはこれに慣れていない場合、それは、kb.next()を使用して文字列のストリームを生成new Playerを使用してプレイヤーにそれらを変換し、数に流れを制限する意味しますあなたがリストに集めたいプレイヤー。

関連する問題