C#控制台程序如何实现按下任意按键重复执行指定代码块
实现方案
你只需要用while(true)死循环把身份生成逻辑包裹起来即可,每次生成完信息后等待用户按键,按下任意键就会进入下一轮循环重新生成。另外你原有代码存在数组索引越界的隐患:你的名、姓数组都只有25个元素(索引范围是024),但你调用`numgen.Next(0,26)`会生成025的整数,取到25的时候会触发索引超出范围报错,这里也同步做了修正。
修改后的完整可运行代码如下:
using System; namespace False_Identity_Generator { class Program { static void Main(string[] args) { // Random实例和姓名数组放在循环外即可,不需要重复创建,节省资源 Random numgen = new Random(); string[] firstnames = { "Bob", "Jeff", "Cary", "Shawn", "Logchad", "Sam", "Ogga", "Tree", "Sup", "Hammy", "Bologna", "Tostito", "Beulah", "Huckleberry", "Bailey", "Catamaran", "X-34", "Chadd", "Ben", "Benny", "Elon", "Baby", "Don", "Shelly", "Joben"}; string[] lastnames = { "Liverson", "Chadderson", "Wright", "Lee", "Gamer", "Booga", "Liberdend", "Fractor", "Faker", "Baker", "Fox", "Wulf", "Sanders", "Bezos", "Musk", "Boatmen", "Baldhead", "Smad", "Sock", "Mobtown", "Shuck", "Snek", "McDonalds", "Wendys", "Waaaaaaaake"}; // 死循环重复执行生成逻辑 while(true) { int first = numgen.Next(0, firstnames.Length); // 直接用数组长度做上限,避免手动数错元素个数 int last = numgen.Next(0, lastnames.Length); Console.WriteLine("Your fake name is: " + firstnames[first] + " " + lastnames[last]); int age = numgen.Next(1, 136); Console.WriteLine(" And your fake age is: " + age + " years old"); Console.WriteLine("按下任意键生成下一个身份..."); Console.ReadKey(true); // 加true可以不显示按下的按键字符,界面更干净 Console.Clear(); // 可选:清屏,每次新生成的内容都在顶部显示 } } } }
你可以根据自己的需求做调整:
- 如果你不想清屏,可以删掉
Console.Clear()这行,历史生成的身份都会保留在控制台里 - 如果想要增加退出逻辑,比如按ESC键退出程序,可以接住
Console.ReadKey的返回值判断,符合条件就用break跳出循环即可 - 用数组的
Length属性当Next的上限是更稳妥的写法,后续你增删姓名数组元素的时候不需要手动修改数字,避免再出现索引越界问题
内容的提问来源于stack exchange,提问作者CT Vaughan
相关产品推荐
相关产品推荐

