我试图将控制台背景颜色设置为随机颜色,但它始终返回洋红色。我需要改变什么才能解决这个问题。谢谢!
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Random random = new Random();
int randomInt = random.Next(0, 6);
while(randomInt < 7)
{
Console.BackgroundColor = ConsoleColor.Red;
randomInt++;
Console.BackgroundColor = ConsoleColor.Blue;
randomInt++;
Console.BackgroundColor = ConsoleColor.Cyan;
randomInt++;
Console.BackgroundColor = ConsoleColor.Green;
randomInt++;
Console.BackgroundColor = ConsoleColor.Red;
randomInt++;
Console.BackgroundColor = ConsoleColor.Yellow;
randomInt++;
Console.BackgroundColor = ConsoleColor.Magenta;
randomInt++;
}
}
}
}
答案 0 :(得分:3)
你误解了我认为的循环概念,它可能不是你使用的工具。 要随机化颜色,您必须将它们与数字相关联,然后选择一个数字并选择相关的颜色。
ConsoleColor是一个枚举,表示每个值已经与一个数字相关联。您可以使用this question中描述的方法从枚举中选择随机值。
如果您只想从枚举中获得一些颜色,则必须创建自己所需值的数组,并从该数组中选择一个值。
以下是如何从数组中选择随机项的示例。
Random random = new Random();
ConsoleColor[] colors = new ConsoleColor[] { ConsoleColor.Red, ConsoleColor.Blue };
var myRandomColor = colors[random.Next(0, colors.Length)];
答案 1 :(得分:0)
您实际上正在设置所有颜色和最后的洋红色。如果你想有条件地设置颜色,我想你应该使用if或case语句。如果您评论洋红色指定,您将始终获得黄色背景
while(randomInt < 7)
{
Console.BackgroundColor = ConsoleColor.Red;
randomInt++;
Console.BackgroundColor = ConsoleColor.Blue;
randomInt++;
Console.BackgroundColor = ConsoleColor.Cyan;
randomInt++;
Console.BackgroundColor = ConsoleColor.Green;
randomInt++;
Console.BackgroundColor = ConsoleColor.Red;
randomInt++;
Console.BackgroundColor = ConsoleColor.Yellow;
randomInt++;
//Console.BackgroundColor = ConsoleColor.Magenta;
//randomInt++; //THIS WILL ALWAYS BE YELLOW
}
我认为您需要的是案例陈述:
switch(randomInt)
{
case 0:
Console.BackgroundColor = ConsoleColor.Red;
break;
case 1:
Console.BackgroundColor = ConsoleColor.Blue;
break;
///....AND SO ON
}
答案 2 :(得分:-1)
你还可以做的是隐式地将int解析为ConsoleColor。
像这样:
Console.BackgroundColor = (ConsoleColor)randomInt;
有了这个,你必须改变你的randomInt的范围。我建议查找枚举和ConsoleColor的背景代码。