2013-10-22 71 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");