2

オブジェクトを含むArrayListがあります。私が望んでいた/必要としているのは、ArrayList内の特定のオブジェクトを検索し、見つかった場合はその値の1つを変更することです。IE私にはサッカー選手のチームがあります。たとえば、フィラデルフィアイーグルスには、チーム名、合計得点、合計サックが含まれ、すべての選手が名前、名前、プレイしたゲーム、位置で一覧表示されます。チャド・ホールと言う特定のプレーヤーを探しています。彼をイーグルスから外して、ニューイングランド・ペイトリオッツと交換したいと思います。これまでのところ、ArrayListの反復ですが、コードがプレーヤーを見つけられず、終了します。

case 6:
           String name = "";
           System.out.print("Who would you like to trade? ");
           name = kb.nextLine();
           tradePlayer(nflTeams, name);

public static void tradePlayer(ArrayList<Team> nflTeams, String name)
  {
     Scanner kb = new Scanner(System.in);
     String teamName = "";
     System.out.print("What team do you want to trade this player to?(Team Acronym) "    );
     teamName = kb.nextLine();

     for(Team t: nflTeams){
        if (nflTeams.contains(name.toLowerCase()))
                      t.setName(teamName);
                }
     System.out.println("Cannot find " + name);
  }

クラスにはPlayer、名、姓、チーム、役職、プレーによって構築されたプレーヤーが含まれていました。私が変えたいのはチームです。Teamクラスでは、チームsetName(String)名を設定する必要があります。

任意の提案や考えは大歓迎です。

4

3 に答える 3

2

if (nflTeams.contains(name.toLowerCase()))

あなたは何をしようとしているのですか?あなたのリストには、名前ではなくオブジェクトnflTeamsが含まれています。 これは機能しません。その経由 でアクセスする必要がある場合は、代わりに使用しますTeam

TeamnameMap<String,Team>

于 2012-12-04T22:14:11.210 に答える
0

チームからプレーヤーのリストを取得し、次のnameように指定してそこから削除する必要があります。

String teamToAddNewPlayer = "New England Patriots";
String deletedPlayer = null;
for(Team t: nflTeams){
      List<String> players = t.getPlayers();
      if (players.contains(name)){
          deletedPlayer = players.remove(name);
      }
      if (t.getName().equals(teamToAddNewPlayer))
          players.add(name);
}
if (deletedPlayer == null)
//nothing was deleted
else
//player was deleted
于 2012-12-04T22:12:16.650 に答える
0

Iterator を使用すると、何をしようとしているのかをより詳細に制御できます。

import java.util.*;

 class IteratorDemo {


public static void main(String args[]) {
      // Create an array list
      ArrayList al = new ArrayList();
      // add elements to the array list
      al.add("C");
      al.add("A");
      al.add("E");
      al.add("B");
      al.add("D");
      al.add("F");

  // Use iterator to display contents of al
  System.out.print("Original contents of al: ");
  Iterator itr = al.iterator();
  while(itr.hasNext()) {
     Object element = itr.next();
     System.out.print(element + " ");
  }
  System.out.println();

  // Modify objects being iterated
  ListIterator litr = al.listIterator();
  while(litr.hasNext()) {
     Object element = litr.next();
     litr.set(element + "+");
  }
  System.out.print("Modified contents of al: ");
  itr = al.iterator();
  while(itr.hasNext()) {
     Object element = itr.next();
     System.out.print(element + " ");
  }
  System.out.println();

  // Now, display the list backwards
  System.out.print("Modified list backwards: ");
  while(litr.hasPrevious()) {
     Object element = litr.previous();
     System.out.print(element + " ");
   }
   System.out.println();
}
}

この例はソースからのものです

于 2012-12-04T22:15:19.360 に答える