2013-10-22 161 views
0

我做了一个简单的数字发生器,我有一个问题:是否有可能让发生器弹出“红色”,“蓝色”,“绿色”,“黄色”和“白色”,而不是数字1-5?随机字符串发生器C#

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

这将是很容易为你将其转换。当你说你想要生成器弹出颜色名称......你想如何使用颜色名称?现在你正在总结这些数字,这对颜色没有意义。 – Kevin

+0

我必须编写一个程序,你可以点击5种颜色的5个按钮,并在显示器上看到例如蓝色的“红色”,所以你必须按下红色按钮... – Franz

回答

0

我会做的是创建一个字符串列表。然后把随机数字作为i。就像 List<string> list1 = new List<string>{"red", "blue", "green"};然后用你的随机数字来调用它的一个随机元素。 list1[randomNumber];

0

定义与更多钞票期望的输出值的数组和,而不是串联郑树森到文本,添加YourArrayOfNamedValues [郑树森]

2

如果得到像1-5输出可以创建字符串[]含有5个元素

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

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

+0

那里我得到一个错误:“错误1从'string'类型到'int'的隐式转换是不可能的。”我做错了什么?也许你可以发布整个代码?我是新的C#:( – Franz

11

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

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

你能发布整个代码?因为它不适用于我:(但我认为我犯了错误,你的代码是正确的) – Franz

+0

为什么上面的例子是完整的。为你工作吗? – sloth

+0

@Franz你需要播种你的随机:) –

3

你可以使用一个enum

定义类似

enum Color 
{ 
    Red, 
    Green, 
    Blue 
} 

然后你可以投你的int这样的:

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

而且,如果你想

Text = color.ToString(); 
+0

如果生成的数字大于2,将会失败。 – sloth

+1

不要使用枚举。这意味着你永远不能使用不是有效的C#标识符的字符串。如果你使用枚举,你应该使用'[Description]'属性来解决这个问题。 – jwg

+0

你是对的。我原本以为他真的有兴趣得到一个随机颜色,而不是随机颜色的_text_。 – PMF

1

以隰欢的答案,就可以使它使用扩展方法有点漂亮:

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");