我一直在尝试使用多维数组来创建电影院的布局。使用X表示关闭,O表示打开

时间:2018-04-25 10:45:41

标签: c# multidimensional-array

          String[,] arr1 = new String[10,10];

          arr1[0,1] = "o " + "o";  
          arr1[1,1] = "o " + "o";
          arr1[2,1] = "x " + "o";
          arr1[3,1] = "o " + "o";
          arr1[4,1] = "x " + "o";
          arr1[5,1] = "o " + "o";
          arr1[6,1] = "o " + "o";
          arr1[7,1] = "o " + "o";
          arr1[8,1] = "o " + "o";
          arr1[9,1] = "o " + "o";

所以这是我用来填充不同索引的代码,但问题是它只填充O,O(或X,O)而不是像实际剧院那样经历10次:OOOXOOXO。然后我需要允许用户使用数组的索引选择一个座位来检查它是否可用。有任何想法吗?? The General idea of how i need to format the output refer to the Martineau Hall

3 个答案:

答案 0 :(得分:1)

如果你想用文字初始化它,没有任何循环等,可以使用

之类的东西
String[,] arr1 = new String[10, 10]
{
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
    { "o ", "o", "o", "o ", "o", "o", "o ", "o", "o", "o" },
};

答案 1 :(得分:1)

我建议使用锯齿状数组 string[][]代替 2D 一个string[,]

  1. 锯齿状阵列更具灵活性:如果某些行的座位数不同会怎样?
  2. 使用 Linq
  3. 更容易操作锯齿状阵列

    让我们创建电影院:

     // Empty 
     String[][] arr1 = Enumerable
       .Range(1, 10)               // ten rows 
       .Select(rank => Enumerable  // each row has
          .Range(1, 10)            // ten 
          .Select(file => "o")     // free seats (o)
          .ToArray())              // organized in array
       .ToArray();
    
     // Some seats are taken
     arr1[2][1] = "x";
     arr1[4][1] = "x";
    
     // Let's print out the map
     Console.WriteLine(String.Join(Environment.NewLine, arr1
       .Select(rank => string.Concat(rank))));
    

    结果:

    oooooooooo
    oooooooooo
    oxoooooooo
    oooooooooo
    oxoooooooo
    oooooooooo
    oooooooooo
    oooooooooo
    oooooooooo
    oooooooooo
    

答案 2 :(得分:0)

因为你的数组似乎只存储一个字母。将其从string[,]更改为char[,]会阻止您使用多个字母。

如果您只需要免费或不免费的座位,我建议您使用bool[,]

我将保留string[,]作为我的答案,因为这是您在问题中使用的内容。

    static void Main(string[] args)
    {
        string[,] arr1 = NewTheater();

        arr1[2, 1] = "x";
        arr1[4, 1] = "x";

    }

    private static string[,] NewTheater()
    {
        string[,] theater = new string[10, 10];

        for (int row = 0; row < 10; row++)
        {
            for (int seat = 0; seat < 10; seat++)
            {
                theater[row, seat] = "o";
            }
        }
        return theater;
    }