对于循环哈希字符模式
本文关键字:哈希 字符 模式 循环 于循环 | 更新日期: 2023-09-27 18:24:16
嗨,我是编程新手,目前有以下代码:
namespace Patterns
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 4; i++)//'rows'
{
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("'n" );
}
}
}
}
这会产生以下输出:
########
######
####
##
哈希数是正确的,因为我从8,6,4,2开始,但每次我进入新行时都需要添加一个额外的空格。如何使其输出如下?
########
######
####
##
谢谢,Umer
从您的代码中,您可以修改它以在内部for循环中执行以下操作:
for (int j = 0; j < i - 1; j++) {
Console.Write(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++) {
Console.Write("#");
}
Console.WriteLine("'n" );
需要注意的是,您可能应该使用StringBuilder来完成此操作,因为我认为经常调用Console.WriteLine.是非常低效的
代码可以进一步修改:
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 4; i++) {
for (int j = 0; j < i - 1; j++) {
sb.append(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++) {
sb.append("#");
}
sb.append("'n" );
}
Console.WriteLine(sb.toString());
引入变量,从0开始行,并为每个行号重复字符串。
这也可以应用于打印散列的字符串:
static void Main(string[] args)
{
int rows = 4;
int columns = 9;
for (int i = 0; i < rows; i++)
{
// Print a string with `i` spaces.
Console.Write(new String(' ', i));
int hashes = columns - ((i + 1) * 2) + 1;
Console.Write(new String('#', hashes));
Console.WriteLine();
}
}
基本上,只需在哈希字符前面添加空格即可。
######## Row 1 (i=1), 0 Space
###### Row 2 (i=2), 1 Space
#### Row 3 (i=3), 2 Spaces
## Row 4 (i=4), 3 Spaces
在这种情况下,每行需要"i-1"个空格。(实际上,它是(8字符计数)/2),字符计数是9-(i*2)+1,所以(8-9+i*2-1)/2=(i*2-2)/2=i-1)所以,只需在打印散列字符之前循环添加空格。
namespace Patterns
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 4; i++)//'rows'
{
for (int j = 0; j < i -1; j++) {
Console.Write(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("'n" );
}
}
}
}
您可以这样做:
for (int i = 1; i <= 4; i++)//'rows'
{
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("'n" );
for (int y = i; y > 0; y--)
{
Console.Write(" ");
}
}