C# - 为什么每次都设置为洋红色?

时间:2017-02-12 13:39:57

标签: c#

我试图将控制台背景颜色设置为随机颜色,但它始终返回洋红色。我需要改变什么才能解决这个问题。谢谢!

    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++;
            }
        }
    }
}

3 个答案:

答案 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的背景代码。