1

我正在使用多维数组来创建“边框”。如果它被打印出来,它看起来像这样:

######
#    #
#    #
#    #
######

到目前为止,我的代码可以创建顶部、左侧和底部边框。目前我不知道如何为其右侧创建边框。

int[,] array = new int[10, 10];
//Create border around box
//Top
for (int i = 0; i < array.GetLength(0); i++)
{
    array[0, i] = 1;
}

//Bottom
for (int i = 0; i < array.GetLength(0); i++)
{
    array[array.GetLength(0) - 1, i] = 1;
}

//Left
for (int i = 0; i < array.GetLength(0); i++)
{
    array[i, 0] = 1;
}

如何在右侧创建边框?另外,我认为我的代码可以改进,我是 C# 新手。

谢谢

4

3 回答 3

1

既然所有的 for 循环都有相同的界限,为什么不在一个循环中这样做:

 for (int i = 0; i < array.GetLength(0); i++)
        {
        //Top
            array[0, i] = 1;
        //Bottom    
        array[array.GetLength(0) - 1, i] = 1;
        //Left
        array[i, 0] = 1;
        // Right
        array[i, array.GetLength(0) - 1] = 1;
        }
于 2013-07-24T01:26:00.067 回答
1

右边框

右边框是底部边框沿对角线(从左上到右下)的反射。因此,采用底部绘图代码并反转 x 和 y 坐标。它给:

// Right
for (int i = 0; i < array.GetLength(0); i++)
{
    array[i, array.GetLength(0) - 1] = 1;
}

代码改进

你的代码是正确的。我建议只进行 2 项改进:

首先,在 C# 中,数组维度在创建数组后无法更改,并且您知道数组的大小:10。因此,让我们将 all 替换array.GetLength(0)为一个名为 的 int arraySize

const int arraySize = 10;    
int[,] array = new int[arraySize, arraySize];
//Create border around box

//Top
for (int i = 0; i < arraySize; i++)
{
    array[0, i] = 1;
}

//Bottom
for (int i = 0; i < arraySize; i++)
{
    array[arraySize - 1, i] = 1;
}

//Left
for (int i = 0; i < arraySize; i++)
{
    array[i, 0] = 1;
}

// Right
for (int i = 0; i < arraySize; i++)
{
    array[i, arraySize - 1] = 1;
}

第二次改进。您多次使用相同的循环。让我们将它们合并在一起。

const int arraySize = 10;    
int[,] array = new int[arraySize, arraySize];

// Create border around box
for (int i = 0; i < arraySize; i++)
{
    array[0, i] = 1;  // Top
    array[arraySize - 1, i] = 1;  // Bottom
    array[i, 0] = 1;  // Left
    array[i, arraySize - 1] = 1;  // Right
}
于 2013-07-24T01:27:06.030 回答
0
int x = 10;
int y = 10;
int[,] array = new int[x, y];

  // iterate over the left coordinate
foreach(int i in Enumerable.Range(0, x))
{
  array[i,0] = 1;    //bottom
  array[i,y-1] = 1;  //top
}

  // iterate over the right coordinate
foreach(int i in Enumerable.Range(0, y))
{
  array[0,i] = 1;    //left
  array[x-1,i] = 1;  //right
}
于 2013-07-24T01:40:40.247 回答