在控制台c#上替换字符颜色
本文关键字:字符 颜色 替换 控制台 | 更新日期: 2023-09-27 18:11:09
我正在尝试将一些c#字符从蓝色替换为白色。这里有一个if语句来检查这个数是奇数还是偶数。这似乎不起作用。
static void Main(string[] args)
{
// Ask for minutes.
//Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Minutes?");
string minutes = Console.ReadLine();
int mins = int.Parse(minutes);
for (int i = 0; i < mins; i++)
{
// Sixty seconds is one minute.
System.Threading.Thread.Sleep(1000 * 60);
// Write line.
if (i % 2 == 0)
{
//iseven
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('&', 30));
}
else
{
//is odd
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('*', 30));
}
}
// Beep ten times.
for (int i = 0; i < 10; i++)
{
Console.Beep(200,1000);
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("[Done]");
Console.Read();
}
两个语句似乎都将颜色设置为ConsoleColor.Blue
。将其中一个更改为ConsoleColor.White
:
if (i % 2 == 0)
{
//iseven
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('&', 30));
}
else
{
//is odd
Console.ForegroundColor = ConsoleColor.White; //<--- here.
Console.WriteLine(new string('*', 30));
}
我已经审查了您的主要功能,似乎您的问题是您总是将前景色设置为蓝色。
if (i % 2 == 0)
{
//iseven
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('&', 30));
}
else
{
//is odd
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(new string('*', 30));
}
只要改变else子句中的第一个语句就可以达到你想要的效果。
正常运行
Console.WriteLine("Minutes?");
string minutes = Console.ReadLine();
int mins = int.Parse(minutes);
for (int i = 0; i < mins; i++)
{
// Sixty seconds is one minute.
System.Threading.Thread.Sleep(1000 * 1);
// Write line.
if (i % 2 == 0)
{
//iseven
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('&', 30));
}
else
{
//is odd
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(new string('*', 30));
}
}
// Beep ten times.
for (int i = 0; i < 10; i++)
{
Console.Beep(200, 1000);
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("[Done]");
Console.Read();
Dave Zych的答案是正确的,我想我应该展示另一种方法。
for (int i = 0; i < 10; i++)
{
// Removed sleep and other calls.
Console.ForegroundColor = i % 2 == 0 ? ConsoleColor.Blue : ConsoleColor.White;
Console.WriteLine(new string(i % 2 == 0 ? '&': '*', 30));
}
免费奖励方法:
ConsoleColor[] colors = new ConsoleColor[] { ConsoleColor.Blue, ConsoleColor.White };
char[] messageChars = new char[] { '&', '*' };
for (int i = 0; i < 10; i++)
{
Console.ForegroundColor = colors[i % 2];
Console.WriteLine(new String(messageChars[i % 2], 30));
}
或者,如果你想要真正的疯狂:
Func<int, ConsoleColor> color = i => i % 2 == 0 ? ConsoleColor.Blue : ConsoleColor.White;
Func<int, string> message = i => new String(i % 2 == 0 ? '&' : '*', 30);
for (int i = 0; i < 10; i++)
{
Console.ForegroundColor = color(i);
Console.WriteLine(message(i));
}
Dave和theB也说对了。但是你正在寻找这个答案,你正在尝试输入分钟= 1,结果你想要的前景颜色为白色,你提到到上面的评论:
static void Main(string[] args)
{
// Ask for minutes.
//Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Minutes?");
string minutes = Console.ReadLine();
int mins = int.Parse(minutes);
//for (int i = 0; i < mins; i++)
for (int i = 1; i <= mins; i++)
{
// Sixty seconds is one minute.
System.Threading.Thread.Sleep(1000 * 60);
// Write line.
if (i % 2 == 0)
{
//iseven
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(new string('&', 30));
}
else
{
//is odd
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(new string('*', 30));
}
}
// Beep ten times.
for (int i = 0; i < 10; i++)
{
Console.Beep(200, 1000);
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("[Done]");
Console.Read();
}
所以你需要更新你的第一个"for"语句:For (int I = 1;I <= min;我+ +)
和ELSE语句:控制台。
就是这样。您需要更新代码。您的代码将按照预期的结果工作。