-4

埋め込まれたテキスト ファイルからランダムな行を選択するにはどうすればよいですか?

プログラムを実行するとクラッシュし、このエラー (パスに不正な文字) が表示されます ( String[] 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;


    }
4

1 に答える 1

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;


}

もう 1 つの変更点として、2 つのランダム オブジェクトは必要なく、1 つを使用してnext2 回呼び出すだけです。おそらく心配する必要はありませんが、コードの書き方によっては、関数を呼び出すたびに同じ乱数を取得する可能性があることにも注意する必要があります(非常に高速に実行した場合)。

于 2013-05-13T16:07:24.313 に答える