C# 如何在for循环中为每个玩家声明一个新数组?
我有一个有限数量的玩家作为用户输入,我必须为每个玩家制作一个一维数组(总是有5个成员)。我如何做到这一点(我需要能够在以后的循环之外使用这些数组)。哦,我不能使用列表 大概是这样的:C# 如何在for循环中为每个玩家声明一个新数组?,c#,arrays,iteration,C#,Arrays,Iteration,我有一个有限数量的玩家作为用户输入,我必须为每个玩家制作一个一维数组(总是有5个成员)。我如何做到这一点(我需要能够在以后的循环之外使用这些数组)。哦,我不能使用列表 大概是这样的: for (int player =1;player<=participants;player++) { int matrixnum[] = new int [5]; } for(int player=1;player您需要的是一个数组数组。您需要的是一个数组数组。所以每个玩家都需要自己的数组?您应该创建一个
for (int player =1;player<=participants;player++)
{
int matrixnum[] = new int [5];
}
for(int player=1;player您需要的是一个数组数组。您需要的是一个数组数组。所以每个玩家都需要自己的数组?您应该创建一个类player
,它有一个int
s数组:
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());
}
}
}
这使您可以在以后自由添加和删除玩家
当您需要获得单个玩家的阵列时:
int[] somePlayer = matrix.get(indexOfPlayer);
如果您有问题。那么每个玩家都需要自己的数组吗?您应该创建一个类player
,其中包含int
s的数组:
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());
}
}
}
这使您可以在以后自由添加和删除玩家
当您需要获得单个玩家的阵列时:
int[] somePlayer = matrix.get(indexOfPlayer);
如果你有问题。从这个开始
List<List<int>> jagged = new List<List<int>>(maxParticipals /* optional */);
int participants = 0;
int finite = 15;
List jagged=新列表(maxParticipals/*可选*/);
int参与者=0;
int有限=15;
然后继续做类似的事情
void more(int value)
{
participants = value;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
void more(int值)
{
参与者=价值;
而(jagged.Count<参与者)jagged.Add(新列表(有限));
}
还是这个
void add(int newOnes)
{
participants += newOnes;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
void add(int newOnes)
{
参与者+=新参与者;
而(jagged.Count<参与者)jagged.Add(新列表(有限));
}
从这个开始
List<List<int>> jagged = new List<List<int>>(maxParticipals /* optional */);
int participants = 0;
int finite = 15;
List jagged=新列表(maxParticipals/*可选*/);
int参与者=0;
int有限=15;
然后继续做类似的事情
void more(int value)
{
participants = value;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
void more(int值)
{
参与者=价值;
而(jagged.Count<参与者)jagged.Add(新列表(有限));
}
还是这个
void add(int newOnes)
{
participants += newOnes;
while (jagged.Count < participants) jagged.Add(new List<int>(finite));
}
void add(int newOnes)
{
参与者+=新参与者;
而(jagged.Count<参与者)jagged.Add(新列表(有限));
}
我会用以下方法:
首先为玩家创建一个包含其所有信息的类:
public class Player
{
public string Name;
//etc
}
创建类以管理操作添加:
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);
}
}
[TestMethod]
公共空间PlayerManager()
{
var playersManager=新playersManager(2,5);
对于(var i=0;i我将采用以下方法:
首先为玩家创建一个包含其所有信息的类:
public class Player
{
public string Name;
//etc
}
创建类以管理操作添加:
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);
}
}
[TestMethod]
公共空间PlayerManager()
{
var playersManager=新playersManager(2,5);
对于(var i=0;i No.一个初学者单独学习的项目。你指的是任意大但有限数量的玩家,对吗?无限数量的玩家太多了。谢谢Eric的评论-当然,我指的是有限数量,实际上不是那么大(2-15).不。这是一个供初学者单独学习的项目。你是指任意大但有限的玩家数量,对吗?无限多的玩家太多了。谢谢Eric的评论-当然,我指的是有限的数量,实际上没有那么大(2-15).Ok,那么以后如何将它们分隔到不同的数组中?哪是.net中ArrayList的命名空间?非泛型类型“System.Collections.ArrayList”不能与类型一起使用arguments@drdigit:我相信Jon的意思是说“列表”而不是“ArrayList”。绝对不是。matrix被定义为ArrayList),它是java,并由matrix.get证明(indexOfPlayer)方法。C#!@drdigit的答案是错误的。还请注意,链接的文档是针对java的。但是,如果替换List
和matrix[indexOfPlayer]
,您将得到OP想要的内容。好的,以后如何将它们分离到不同的数组中?哪是.net中ArrayList的命名空间?非泛型类型“System.Collections.ArrayList”不能与类型一起使用arguments@drdigit:我相信Jon的意思是说“列表”而不是“ArrayList”。绝对不是。矩阵被定义为ArrayList)这是java,由matrix.get(indexOfPlayer)方法证明。C#!@drdigit的答案是错误的。还请注意,链接的文档是针对java的。但是,如果替换List
和matrix[indexOfPlayer]
,您将得到OP想要的结果。