如何为每个玩家声明一个新数组 - 在 for 循环期间
本文关键字:数组 for 循环 新数组 声明 玩家 一个 | 更新日期: 2023-09-27 18:17:58
我有有限数量的玩家用户输入,我必须为每个玩家创建一个一维数组(总是有 5 个成员(。我该怎么做(我需要能够在循环之外使用这些数组(。哦,我不能使用列表。
像这样:
for (int player =1;player<=participants;player++)
{
int matrixnum[] = new int [5];
}
并以某种方式使其将每次迭代更改为matrixnum1
,matrixnum2
... matrixnumparticipants
.
你需要的是一个数组数组。
所以每个玩家都需要自己的数组?您应该创建一个具有 int
数组的类Player
:
public class Player {
public int[] values;
public Player() {
values = new int[5];
}
}
public class Main {
ArrayList<Player> players = new ArrayList<Player>();
public static void main(String[] args) {
for(int player = 1; player < participants; player++) {
players.add(new Player());
}
}
}
这样做允许您向 Player
类添加一个方法,以便更轻松地修改和使用数组。
编辑:
在阅读了您对另一个答案的评论后,您不想使用类,您应该使用int
数组ArrayList
。
ArrayList<int[]> matrix = new ArrayList<int[]>();
for(int player = 1; player < participants; player++) {
matrix.add(new int[5]);
}
这使您可以在以后自由添加和删除玩家。
当您需要获取单个玩家的数组时:
int[] somePlayer = matrix.get(indexOfPlayer);
如果您有任何疑问,请阅读有关ArrayList
的更多信息。
从这个开始
List<List<int>> jagged = new List<List<int>>(maxParticipals /* optional */);
int participants = 0;
int finite = 15;
然后继续这样的事情
void more(int value)
{
participants = value;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
或者这个
void add(int newOnes)
{
participants += newOnes;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
我会按以下方式执行此操作:
首先为玩家创建一个包含其所有信息的类:
public class Player
{
public string Name;
//etc
}
创建类来管理操作 Add:
public class PlayersManager
{
private readonly Player[,] _players;
private readonly int _totalNumberOfPlayers;
private readonly int _topNumberOfTeams;
private bool PlayerPositionReachedLimit {
get { return _playerPosition == _topNumberOfTeams; }
}
private bool PlayerCounterExcedsTotalPlayers
{
get { return _playerCounter >= _totalNumberOfPlayers; }
}
private int _playerCounter;
private int _playerPosition;
public Player[,] Players
{
get { return _players; }
}
public PlayersManager(int totalNumberOfPlayers, int topNumberOfTeams)
{
_playerCounter = 0;
_playerPosition = 0;
_topNumberOfTeams = topNumberOfTeams;
_totalNumberOfPlayers = totalNumberOfPlayers;
_players = new Player[totalNumberOfPlayers, topNumberOfTeams];
}
public void Add(Player player)
{
if (PlayerCounterExcedsTotalPlayers)
throw new Exception("Number of players exceded");
if (PlayerPositionReachedLimit)
{
_playerCounter++;
_playerPosition = 0;
}
_players[_playerCounter, _playerPosition]= player;
_playerPosition++;
}
}
所以你可以做这样的事情:
[TestMethod]
public void PruebaPlayersManager()
{
var playersManager = new PlayersManager(2, 5);
for (var i = 0; i <= 9; i++)
{
var player = new Player
{
Name = i.ToString()
};
playersManager.Add(player);
}
}
现在,您不仅限于 5 个,您可以将其配置为您想要的任何大小:)
我希望这有帮助,
干杯