C# 如何在for循环中为每个玩家声明一个新数组?

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您需要的是一个数组数组。您需要的是一个数组数组。所以每个玩家都需要自己的数组?您应该创建一个

我有一个有限数量的玩家作为用户输入,我必须为每个玩家制作一个一维数组(总是有5个成员)。我如何做到这一点(我需要能够在以后的循环之外使用这些数组)。哦,我不能使用列表

大概是这样的:

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想要的结果。