【问题标题】:Random string generator C#随机字符串生成器 C#
【发布时间】:2013-10-22 14:32:40
【问题描述】:

我做了一个简单的数字生成器,我有一个问题:生成器是否可以弹出“红色”、“蓝色”、“绿色”、“黄色”和“白色”而不是数字 1- 5?

namespace zufallsgenerator
{
    public partial class Form1 : Form
    {
        Random r = new Random();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnWhlie_Click(object sender, EventArgs e)
        {
            int summe = 0, z; 

            lblAnzeige.Text = " ";

           while (summe <= 0)
           {
                z = r.Next(1, 6);
                summe = summe + z;
           }
           lblAnzeige.Text += summe + "\n";               
        }
    }
}

【问题讨论】:

  • 转换它很容易。当您说您希望生成器弹出颜色名称时......您究竟想如何使用颜色名称?现在你正在对数字求和,而这对颜色没有意义。
  • 我必须写一个程序,如果你可以点击 5 种颜色的 5 个按钮,然后在屏幕上你会看到“红色”写成蓝色,所以你必须按下红色按钮.. .

标签: c# string random generator


【解决方案1】:

您可以创建一个简单的数组并使用随机生成的索引访问它,例如:

var r = new Random();
string[] colors = {"red", "blue", "green", "yellow", "white"};
var random_color = colors[r.Next(colors.Length)];

【讨论】:

  • 你能发布整个代码吗?因为它对我不起作用:(但我认为我犯了错误,你的代码是正确的;)
  • @Franz 你需要随机播种:)
【解决方案2】:

您可以使用enum

定义类似

enum Color
{
   Red,
   Green,
   Blue
}

然后您可以将您的 int 转换为:

Color color = (Color)r.Next(1, 6)

如果你愿意的话

Text = color.ToString();

【讨论】:

  • 如果生成的数字> 2,这将失败。
  • 不要为此使用枚举。这意味着您永远不能使用不是有效 C# 标识符的字符串。如果你确实使用枚举,你应该使用[Description] 属性来解决这个问题。
  • 你是对的。我原本以为他是真的有兴趣得到一个随机颜色,而不是得到随机颜色的text
【解决方案3】:

如果你得到像 1-5 这样的输出,你可以创建包含 5 个元素的 string[]

string[] colors = new string[] { "red", "blue", "green", " yellow", "white" }

您可以检索colors[ r.Next( 0, 5 ) ],而不是检索r.Next( 1, 6 )(因为字符串数组是0索引,更改了最小值和最大值)。

【讨论】:

  • 那里我得到一个错误:“错误 1 ​​从类型 'string' 到 'int' 的隐式转换是不可能的。”我做错了什么?也许你可以发布整个代码?我是 C# 新手 :(
【解决方案4】:

以西欢的回答,你可以使用扩展方法让它更漂亮一点:

public static T Next<T>(this System.Random Random, params T[] List)
{
    if(List.Length==0)
        return default(T);
    return List[Random.Next(0, List.Length)];
}

然后调用它就是:

var r=new System.Random();
var randon_color = r.Next("red", "blue", "green", "yellow", "white");

【讨论】:

    【解决方案5】:

    我要做的是创建一个字符串列表。然后把随机数作为i。所以喜欢 List&lt;string&gt; list1 = new List&lt;string&gt;{"red", "blue", "green"}; 然后使用你的随机数来调用它的随机元素。 list1[randomNumber];

    【讨论】:

      【解决方案6】:

      使用可能的所需输出值定义一个数组,而不是将 summe 连接到文本,添加 YourArrayOfNamedValues[summe]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-01
        相关资源
        最近更新 更多