gpt4 book ai didi

java - 修改 ArrayList 中的 ArrayList

转载 作者:行者123 更新时间:2023-11-30 08:10:44 25 4
gpt4 key购买 nike

我有三门课。玩家等级:

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;
}

最佳答案

总的来说,您的方法看起来不错。

但是您的代码中存在一些问题:

  1. 您无法为方法调用赋值。

    playerAList.get(i) =  currentPlayer;

    但是,这应该有效:

    currentPlayer = playerAList.get(i);
  2. 除此之外,您不需要此行:

    playerAList.set(i, currentPlayer);

    您在此方法中更改的 Player 保留在列表中并“自动更新”,因为所有更改都在同一个内存块上执行,即您的 Player code> 已创建。您的 playerAListcurrentPlayer 都持有对此内存块的引用。

  3. 还有一件事是错误的。您无法从返回类型为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com