【问题标题】:StackOverflow with Random Name Generator in C# [duplicate]StackOverflow 与 C# 中的随机名称生成器 [重复]
【发布时间】:2021-12-18 13:49:22
【问题描述】:
using System;


namespace npcnames

{
    class Program
{



    static string RandomVowel()
    {
        Random rand = new Random(); 
        string[] Vowels = new string[5] { "a", "e", "i", "o", "u" };
        int index = rand.Next(Vowels.Length); 
        string Vowel = Vowels[index]; 

        return Vowel;
    }

    static string RandomConsonant()
    {
        Random rand = new Random(); 
        string[] Consonants = new string[21] { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" };
        int index = rand.Next(Consonants.Length); 
        string Consonant = Consonants[index]; 

        return Consonant;
    }

    static string MaleName()
    {
        string malename = RandomConsonant() + RandomVowel() + RandomConsonant() + RandomVowel() + RandomConsonant();
        return MaleName();
    }

    static string FemaleName()
    {
        string femalename = RandomVowel() + RandomConsonant() + RandomVowel() + RandomConsonant() + RandomVowel();
        return FemaleName();
    }

    static void generateFemaleName(int from, int to, int step)
    {
       

        for (int a = from; a <= to; a = a + step)
        {
         
            Console.WriteLine("Female:");
            Console.WriteLine(a + FemaleName());
        }


    }

    static void generateMaleName(int from, int to, int step)
    {
        

        for (int b = from; b <= to; b = b + step)
        {

            Console.WriteLine("Male:");
            Console.WriteLine(b + MaleName());
        }


    }






    static void Main(string[] args)
    {
        generateFemaleName(1,10,1);
        Console.WriteLine();
        generateMaleName(1,10,1);

    }
}

大家好,我是编码和一切的新手,如果有人能帮助我解决这个问题,我将不胜感激。问题是,在我的代码中,我不断收到堆栈溢出,我不知道如何防止它正常执行我的程序。该程序的目的是在每个 10 个元音和辅音的列表中生成随机选择的元音和辅音的男性和女性名称。

【问题讨论】:

  • 欢迎您,在调试您的 MaleNameFemaleName 方法时,您是否发现了一些奇怪的地方?

标签: c# random generator stack-overflow


【解决方案1】:

问题就在这里:

static string FemaleName()
{
   string femalename = RandomVowel() + RandomConsonant() + RandomVowel() + RandomConsonant() + RandomVowel();
   return FemaleName(); //  <== bam!
}

变化:

return FemaleName();

到:

return femalename;

简短的故事是方法不断地调用自己。 MaleName() 完全一样。

另外,在我们修复问题时,Random 初始化应该在方法之外:

private static Random rand = new Random(); 

static string RandomConsonant()
{
   string[] Consonants = new string[21] { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" };
   int index = rand.Next(Consonants.Length); 
   string Consonant = Consonants[index]; 

   return Consonant;
}

【讨论】:

  • 对于 MaleName() 也是如此。
  • 并且不要在每次调用时创建一个新的 Random。
  • 感谢您的回答!解决方法非常简单,只是我像往常一样愚蠢。 Visual Studio 完全让我偏离了轨道,告诉我问题出在元音和辅音方法上,我没有考虑过其他事情。
  • 快速提醒@TheGeneral,如果可以,请在您的工作中应用拼写检查器。我了解风格拼写错误的流行,但请不要在这里这样做。
  • 基于搜索设备上的快速扫描的快速摘要,为您提供帮助:26 im -> 我是; 0 生病 -> 我会的; 78 不能 -> 不能; 18 等 -> 等; 48 不会 -> 不会; 28 我 -> 我是; 28 什么 -> 什么; 63 id -> 我愿意; 6 没有 -> 没有; 44 让 -> 让我们。
【解决方案2】:

如果你改变它会被修复

return MaleName(); 

return malename;

同样的

return FemaleName(); 

return femalename;

就是你要返回的字符串。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2018-07-25
    • 2014-06-10
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多