0

私は英語の単語を提示し、対応する外国語を求める簡単な言語翻訳者を書いています。これまでのところ、コードは配列からランダムな単語を選択しますが、リストから対応する外国語を選択するようにコードを取得しようとしています。これまでのコードは次のとおりです。

public class Words
    {
        public int spanishindex; 
        string[] EnglishWords = { "Yellow", "Yello", "Yelow", "Yllow", "ellow" };
        string[] SpanishWords= { "giallo", "giall", "iallo", "gllo", "lo" };

        public String GetRandomWord()
        {
            Random randomizer = new Random();
            index = randomizer.Next(EnglishWords.Length);
            string randomword = EnglishWords[randomizer.Next(index)];
            spanishindex= index;
            return randomword;
        }

        public String MatchSpanishWord()
        {
            string matchword = SpanishWords[spanishindex];
            return matchword;
        }
    }

私の考えは、MatchSpanishWordメソッドのランダムな値とは反対のインデックス値を渡すことによって、対応する単語を取得することでした(リストが順番に並んでいるため)

したがって、「ellow」が選択されている場合、スペイン語に相当するものは「lo」になります。

助けていただければ幸いです、ありがとう。

4

3 に答える 3

3

問題は、random を 2 回呼び出していたことです。1 回目はランダム インデックスを生成し、次にもう一度配列インデックスを生成します。以下のコードでバグを修正しました。

public class Words
{
    public int spanishindex; 
    string[] EnglishWords = { "Yellow", "Yello", "Yelow", "Yllow", "ellow" };
    string[] SpanishWords= { "giallo", "giall", "iallo", "gllo", "lo" };

    public String GetRandomWord()
    {
        Random randomizer = new Random();
        index = randomizer.Next(EnglishWords.Length);
        string randomword = EnglishWords[index]; //<---- this is the fix
        spanishindex= index;
        return randomword;
    }

    public String MatchSpanishWord()
    {
        string matchword = SpanishWords[spanishindex];
        return matchword;
    }
}
于 2013-03-20T19:51:24.740 に答える
0

変化する:

string randomword = EnglishWords[randomizer.Next(index)];

string randomword = EnglishWords[index];

...すでにランダムに見つけたインデックスよりも小さいランダムインデックスが必要ないと仮定します。

于 2013-03-20T19:51:33.013 に答える
0

あなたは変わるべきです

  string randomword = EnglishWords[randomizer.Next(index)];

  string randomword = EnglishWords[index];
于 2013-03-20T19:51:35.390 に答える