我有三门课。玩家等级:
public class Player
{
private String playerName;
private int playerWorth;
private int playerSpent;
// A list of player prize objects.
private ArrayList<Prize> playerPrizeList;
public void Player()
{
playerPrizeList = new ArrayList <Prize>();
playerName = "";
playerWorth = 0;
playerSpent = 0;
}
public void playerDetails(String playerName, int playerWorth, int playerSpent)
{
setPlayerName(playerName);
setPlayerWorth(playerWorth);
setPlayerSpent(playerSpent);
}
public void prize(String prizeName, int prizeWorth, int prizeCost)
{
populatePrize(prizeName, prizeWorth, prizeCost);
}
private void populatePrize(String prizeName, int prizeWorth, int prizeCost)
{
playerPrizeList.add(new Prize(prizeName, prizeWorth, prizeCost));
}
另一个类是 PlayerList 类,我试图在该类中将一个新的玩家对象添加到一个有效的 arrayList 中,但随后我在该 Player 类中还有一个由(奖品对象)组成的prizeList 数组。将播放器添加到 ArrayList 后,如何检索该对象并对(我的最后一个代码块)进行更改。我希望我能正确解释这一点。
public class PlayerList
{
private ArrayList<Player> playerAList;
public PlayerList()
{
playerAList = new ArrayList<Player>();
}
public ArrayList<Player> addPlayer(String playerName, int playerWorth, int playerSpent)
{
Player newPlayer = new Player();
newPlayer.setPlayerName(playerName);
newPlayer.setPlayerWorth(playerWorth);
newPlayer.setPlayerSpent(playerSpent);
playerAList.add(newPlayer);
return playerAList;
}
/**
* @i is the index of ArrayList for Player Prizes
*/
public void setPlayerPrizeList(int i, String prizeName, int prizeWorth, int prizeCost)
{
playerAList.get(i) = currentPlayer;
currentPlayer.populatePrize(prizeName, prizeWorth, prizeCost);
playerAList.set(i, currentPlayer);
return playerAList;
}
最佳答案
总的来说,您的方法看起来不错。
但是您的代码中存在一些问题:
您无法为方法调用赋值。
playerAList.get(i) = currentPlayer;
但是,这应该有效:
currentPlayer = playerAList.get(i);
除此之外,您不需要此行:
playerAList.set(i, currentPlayer);
您在此方法中更改的
Player
保留在列表中并“自动更新”,因为所有更改都在同一个内存块上执行,即您的Player
code> 已创建。您的playerAList
和currentPlayer
都持有对此内存块的引用。还有一件事是错误的。您无法从返回类型为
void
的方法中返回
任何内容:return playerAList;
总而言之,您的方法 setPlayerPrizeList()
应该如下所示:
public void setPlayerPrizeList(int i, String prizeName, int prizeWorth, int prizeCost) {
currentPlayer = playerAList.get(i);
currentPlayer.populatePrize(prizeName, prizeWorth, prizeCost);
}
关于java - 修改 ArrayList 中的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418711/