じゃんけんのプレイヤー数が何人に増えてもいいようにArrayList
にプレイヤーを格納して引数でArrayList
ごと渡そうと考えました。なんとかArrrayList
に格納されたPlayer
クラスのメソッドのgetName()
を動かせたのはいいのですがJudge
クラスのstart
メソッドのなかでPlayer
型の変数を作って、そこに受け取った引数を代入するという文であるPlayer p1 = entryPlayer.get(0);
をプレイヤーの数の分だけ書いていくというのは無駄な気がしました。
そこでJudge
クラスの(1)でプレイヤー数を取得して(2)でplayer1
のようにplayer
+playerNum
で変数名を作り、vs
という表示もプレイヤー数から1を引いた数だけplayer
の直後に表示させることができればプレイヤー数が何人増えても気にしなくていいと考えたものの、上手く変数を作ることができませんでした。
start
メソッドがプレイヤーの数を意識しなくてもいいような方法はないでしょうか?
java
1public class Player { 2 private String name; 3 4 public Player(String name) { 5 this.name = name; 6 } 7 8 public String getName() { 9 return this.name; 10 } 11}
java
1public class Main { 2 public static void main(String[] args) { 3 Player p1 = new Player("いぬ"); 4 Player p2 = new Player("ねこ"); 5 Player p3 = new Player("きつね"); 6 7 ArrayList<Player> entryPlayer = new ArrayList<>(); 8 9 entryPlayer.add(p1); 10 entryPlayer.add(p2); 11 entryPlayer.add(p3); 12 13 Judge judge = new Judge(); 14 judge.start(entryPlayer); 15 } 16}
java
1public class Judge { 2 public void start(ArrayList<Player> entryPlayer) { 3 // (1) プレイヤー数を取得 4 int playerNum[] = new int[entryPlayer.size()]; 5 // (2) ここで変数を作ることができずにエラー 6 Player (p + (playerNum.length)) = entryPlayer.get(0); 7 System.out.print(.getName()); 8 9 System.out.print(" vs "); 10 Player p2 = entryPlayer.get(1); 11 System.out.print(p2.getName()); 12 System.out.print(" vs "); 13 Player p3 = entryPlayer.get(2); 14 System.out.print(p3.getName()); 15 System.out.println("のじゃんけん対戦を開始します"); 16 } 17}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/23 13:44
退会済みユーザー
2018/01/23 14:10