如何初始化和使用数组

时间:2018-11-07 19:54:52

标签: c# arrays

我正在做一些C#作业,这些是指令:

  

创建一个名为FunWithArrays的新项目。

     

添加一个名为Game的类,并确保它是公共的。游戏应该有一个   尺寸为5 x 5的公共二维字节数组,称为BingoCard。   BingoCard应该在Game类的构造函数中初始化。   还应该在   游戏类。与上述相同的构造函数应收到一个   字符串来初始化玩家的名字。

     

在main方法中返回创建一个尺寸为一维的游戏数组   3.使用名称“ Beth”,“ Chris”和“ Don”添加三个新游戏。在主方法中添加一个Random对象。

     

将Game数组和Random对象传递给称为   “ InitilizeArray。”使用foreach循环遍历游戏。   在foreachloop内部,使用嵌套的for循环分配随机字节   数组中25个元素中每个元素的值。 (提示:使用一些东西   像(byte)rand.next()一样,让Random对象返回一个字节。使   确保随机字节范围是1到75。

     

然后,从main方法将游戏数组传递给静态方法   称为“ DisplayArray”。然后像以前一样使用foreach和for循环   打印出每个玩家和该玩家的宾果卡。卡应该   在控制台中以5 x 5的表格显示。

到目前为止,我停留在第3段中。

在第一段中,我做了一个看起来很正确的课:

public class Game
{
    public Game() { }

    public Game (string pN)
    {
        PlayerName = pN;
        byte[,] BingoCard = new byte[5, 5];
    }

    public string PlayerName { get; set; }
}

第二段,在我的主要方法中:

static void Main(string[] args)
{
    const int GameSize = 3;

    Random rand = new Random();
    Game[] gameArray = new Game[GameSize];

    Game game1 = new Game("Chris");
    Game game2 = new Game("Beth");
    Game game3 = new Game("Don");

    InitializeArray(gameArray[], rand);
}

我不确定我是否正确地“创建了三个新游戏”,但是我认为是。

现在我在第三段中遇到了问题,应该将每个新游戏(game1,game2,game3)传递给gameArray,然后使用foreach循环遍历每个游戏,例如:

foreach (var game in g)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game[row, col] = (byte)r.Next();
        }
    }
}

我应该如何添加三个新游戏并对其进行初始化?

1 个答案:

答案 0 :(得分:1)

根据您的指示:

  

游戏应该具有大小为5 x 5的 public 二维字节数组,称为BingoCard。

但是在您的类中,您已经在构造函数中声明了字节数组。这意味着在创建类并调用构造函数时,将创建一个字节数组。然后,在构造函数结束的下一行中,字节数组不再可用。

您应该做的是将其创建为公共财产,就像使用PlayerName一样:

public class Game
{
    // Public properties
    public byte[,] BingoCard = new byte[5, 5];
    public string PlayerName { get; set; }

    // Constructors
    public Game() { }

    public Game(string pN)
    {
        PlayerName = pN;            
    }
}

现在您的程序将可以访问它。


  

...创建一个尺寸为3的单维游戏数组。使用名称“ Beth”,“ Chris”和“ Don”添加三个新游戏。

虽然您创建了3个游戏,但尚未将它们添加到数组中。您可以使用索引来做到这一点:

Game[] gameArray = new Game[GameSize];

gameArray[0] = new Game("Chris");
gameArray[1] = new Game("Beth");
gameArray[2] = new Game("Don");

现在您可以遍历游戏数组并可以引用game.BingoCard将项目添加到每个Game对象的多维数组中:

foreach (var game in gameArray)
{
    for (int row = 0; row < 5; row++)
    {
        for (int col = 0; col < 5; col++)
        {
            game.BingoCard[row, col] = (byte)r.Next();
        }
    }
}

但是您仍然有一些工作要做...

  

确保随机字节范围是1到75。