2013-05-13 82 views
-4

如何從嵌入的文本文件中選取一個隨機行?C#從嵌入的文本文件中選擇隨機線?

當我運行它崩潰和給我此錯誤(在路徑非法字符)在此行中(字符串[] randFirst = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.fnames))的程序

這是我的。

private void btnRandom_Click(object sender, EventArgs e) 
    { 
     String nFirstName; 
     String nLastName; 

     Random fname = new Random(); 
     Random lname = new Random(); 


      String[] randFirst = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.fnames); 
      nFirstName = randFirst[fname.Next(randFirst.Length)]; 

      String[] randLast = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.lnames); 
      nLastName = randLast[lname.Next(randLast.Length)]; 


     txtCharacterName.Text = nFirstName + " " + nLastName; 
     return; 


    } 
+7

什麼是不工作?它拋出一個錯誤?它是否會輸出錯誤? – 2013-05-13 16:02:51

+0

當我運行程序時,它崩潰,並給我這個錯誤(路徑中的非法字符)在這一行(String [] randFirst = File.ReadAllLines(Separis_Fantasy_Tools_PE.Properties.Resources.fnames);) – cpar 2013-05-13 16:05:20

+0

這可能是你想要的東西添加到您的問題....它不輸出正確和爆炸之間的巨大差異。 – 2013-05-13 16:06:44

回答

1

Separis_Fantasy_Tools_PE.Properties.Resources.fnames是文本文件本身,而不是文本文件的路徑。其他

private void btnRandom_Click(object sender, EventArgs e) 
{ 
    String nFirstName; 
    String nLastName; 

    Random rnd= new Random(); 


    String[] randFirst = Separis_Fantasy_Tools_PE.Properties.Resources.fnames.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
    nFirstName = randFirst[rnd.Next(randFirst.Length)]; 

    String[] randLast = Separis_Fantasy_Tools_PE.Properties.Resources.lnames.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
    nLastName = randLast[rnd.Next(randLast.Length)]; 


    txtCharacterName.Text = nFirstName + " " + nLastName; 
    return; 


} 

一個變化,你不需要兩個隨機對象,只使用一個,並調用next兩次。你可能不需要擔心它,但你也應該知道,你寫代碼的方式可能會得到same random number every time you call your function(如果你真的這麼做的話)。

+0

謝謝!你的建議有助於工作。 – cpar 2013-05-13 16:16:04

+0

這對我來說非常有幫助。很好的答案。 – 2013-06-04 01:01:28