2016-12-25 11 views
0

ハングマンゲームを作成しました。しかし、すべてのコードはGUI上にありました。私はプログラミングの本をたくさん読んでいましたが、私はGUIにすべてを入れるのではなく、関数を使用してオブジェクト指向のプログラムを実際に使いたいと思っています。だから私はランダムな単語を生成する関数を作成しようとしましたが動作しません。エラーをスローします。mscorlib.dllで 'System.StackOverflowException'型の未処理の例外が発生しました。クラスから関数を使用しているときにエラーが発生しました

class GetSecretWord 
{ 
    public static string GetWord() 
    { 
     string unsortedwords = "master,bother,bucket,legend,method"; 
     List<string> sortedwords = unsortedwords.Split(',').ToList(); 

     int index = new Random().Next(sortedwords.Count); 
     string secretWord = sortedwords[index]; 

     return GetWord(); 
    } 
} 

私は間違っていますか?また

、私のフォームのコードで:

private void btn_Play_Click(object sender, EventArgs e) 
    { 
     string theSecretWord = GetSecretWord.GetWord(); 
     MessageBox.Show(theSecretWord); 
    } 

私はそれが動作するかどうかをテストするためにメッセージボックスを使用しますが、それは...

+0

あなたはsecretWordを返すべきですが、その代わりに同じメソッドを何度も何度も呼び出しています... –

+0

単語リストをスタックに置くと、単語とPopを一度にランダム化でき、リピートを心配する。また、クラスの全生涯に1つのRandomインスタンスを使用する必要があります。 – Plutonix

答えて

2

secretWord

public static string GetWord() 
{ 
    string unsortedwords = "master,bother,bucket,legend,method"; 
    List<string> sortedwords = unsortedwords.Split(',').ToList(); 

    int index = new Random().Next(sortedwords.Count); 
    string secretWord = sortedwords[index]; 

    return secretWord; 
} 
を返すために、あなたのリターンを変更しません。

今、スタックオーバーフローの例外を引き起こしている関数を再帰的に呼び出しています。

+0

私はそれを行うときにエラーがあります:メソッド名が必要です|私はこれを前に試して、secretWordを返そうとしましたが、それがエラーを起こしたとき、本当に私を守りませんでした。 –

+0

どこがエラーですか? –

+0

ああ、それは働いた、ありがとう。 :) –

関連する問題