我正在使用多维数组来创建“边框”。如果它被打印出来,它看起来像这样:
######
# #
# #
# #
######
到目前为止我的代码可以创建顶部,左侧和底部边框。目前我不知道如何为它的右侧创建边框。
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#的新手。
由于
答案 0 :(得分: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;
}
答案 1 :(得分:1)
右边框是沿对角线(左上角到右下角)的底部边框的反射。因此,采用底部绘图代码并反转x和y坐标。它给出了:
// Right
for (int i = 0; i < array.GetLength(0); i++)
{
array[i, array.GetLength(0) - 1] = 1;
}
您的代码是正确的。我建议只做两个改进:
首先,在C#中,在创建数组后无法更改数组维度,并且您知道数组的大小:10。所以,让我们用名为{{1}的int替换所有array.GetLength(0)
}。
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;
}
答案 2 :(得分: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
}