我需要创建以下模式:
这是作业,这个问题我第一次失败了。 我现在读到我应该只使用" *"有一次,但在这种情况下,这甚至会如何运作? 如果有人能给我一些关于如何思考的见解,我将不胜感激。
我的代码如下:
using System;
class StarPattern
{
public static void Main()
{
for (int i = 0; i < 5; i++)
{
Console.Write("*");
}
for (int a = 0; a <= 0; a++)
{
Console.WriteLine("");
Console.Write("*");
}
for (int c = 0; c <= 0; c++)
{
Console.WriteLine(" *");
}
for (int d = 0; d <= 1; d++ )
{
Console.Write("*");
Console.WriteLine(" *");
}
for (int e = 0; e < 5; e++ )
{
Console.Write("*");
}
Console.ReadLine();
}
}
答案 0 :(得分:11)
您可以通过嵌套循环来简化代码,以便外部(i
)=行和内部(j
)=列。从查看样本开始,如果您处于两者的边界,则需要写出来,这样您就可以添加一个条件,只需写出最小值和最大值。
private static void Main(string[] args)
{
for (int i = 0; i <= 4; i++)
{
for (int j = 0; j <= 4; j++)
{
if (i == 0 || i == 4 || j == 0 || j == 4)
{
Console.Write("*");
}
else
{
Console.Write(" ");
}
}
Console.WriteLine();
}
Console.ReadKey();
}
我可能用一个名为MIN的常数替换0,用一个名为MAX的常量替换4以保存重复它们。这样,您只需更改常量即可增加正方形的大小。
答案 1 :(得分:5)
几乎没有人会为你评论他们的代码。多么令人失望!
这里的诀窍是专注于重要的事情,并定义你将要的价值观;
这些值是高度和宽度 - 矩形的核心组件。
图案的黄金法则是:如果每个字符的行和列位于正方形的边缘,请打印*
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Stars
{
class Program
{
static int Width = 5; //define the width of the square in characters
static int Height = 5; //define the height of the square in characters
static void Main(string[] args)
{
for (int row = 0; row <= Height; row++) //Each iteration here is one row.
{
//loop representing columns. This is NESTED within the rows so
//that each row prints more than one column
for (int column = 0; column <= Width; column++)
{
if (IsCentreOfSquare(row, column)) //calculate if the current row and column coordinates are the interior of the square
{
Console.Write(" ");
}
else
{
Console.Write("*");
}
}
Console.WriteLine(); //this row is over. move to the next row
}
Console.ReadLine(); //pause so that the user can admire the pretty picture.
}
/// <summary>
/// Calculates if the row and column indexes specified are in the interior of the square pattern
/// </summary>
/// <returns></returns>
private static bool IsCentreOfSquare(int row, int col)
{
if (row > 0 && row < Height)
{
if (col > 0 && col < Width)
{
return true;
}
}
return false;
}
}
}
答案 2 :(得分:1)
这对于这样一个简单的程序来说可能有些过分,但要使其可扩展并添加一些const int
以使设计能够随时修改!
好问题。觉得我再次辅导很有趣!很高兴看到你至少给了它一个诚实的尝试:)
class Program
{
// Use string if you are okay with breaking the current pattern.
// private static string myDesign = "*";
// Use char if you want to ensure the integrity of your pattern.
private static char myDesign = '*';
private const int COLUMN_COUNT = 5;
private const int ROW_COUNT = 5;
private const int FIRST_ROW = 0;
private const int LAST_ROW = 4;
private const int FIRST_COLUMN = 0;
private const int LAST_COLUMN = 4;
static void Main(string[] args)
{
// Iterate through the desired amount of rows.
for (int row = 0; row < ROW_COUNT; row++)
{
// Iterate through the desired amount of columns.
for (int column = 0; column < COLUMN_COUNT; column++)
{
// If it is your first or last column or row, then write your character.
if (column == FIRST_COLUMN || column == LAST_COLUMN || row == FIRST_ROW || row == LAST_ROW)
{
Console.Write(myDesign);
}
// If anywhere in between provide your blank character.
else
{
Console.Write(" ");
}
}
Console.WriteLine("");
}
Console.Read();
}
}
答案 3 :(得分:1)
这并不困难。您需要创建两个循环:一个用于行,一个用于列,然后确定是否打印星形。只有第一行和最后一行和列有一个星号。
在我的例子中,我使用了两个从0开始并计数到4的计数器。如果任一计数器值的余数除以4等于0,那么我打印一个星号,否则为空格。
using System;
namespace Stars
{
internal static class StarPattern
{
private static void Main()
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
Console.Write((i%4 == 0) | (j%4 == 0) ? '*' : ' ');
}
Console.WriteLine();
}
}
}
}
答案 4 :(得分:0)
您需要打印一定数量的行,每行有一定数量的字符。
一种方法是创建或查找打印所需字符序列的方法。然后创建一个方法来调用它的调用。最后,打印出所有结果。
private void PrintBox(char c, int width, int height)
{
var result = new List<string>();
result.Add(new string(c, width)); // First line
for (var i = 0; i < height - 2; i++)
{
string iLine;
int spaceCount = width - 2;
iLine = new string(c, 1) + new string(' ', spaceCount) + new string(c, 1);
result.Add(iLine);
}
result.Add(new string(c, width)); // Last line
// FYI, there's a StringBuilder class that makes all this easier
foreach (var line in result)
{
Console.WriteLine(line);
}
}
这里重要的OOP概念是我们使用单个可重用的方法来构造一个字符序列 - 新字符串(char,int)。如果我们想创建一个Circle,我们可以基于相同的原理创建一个BuildCircle方法。