我正在构建基于控制台的彩票游戏,用户输入他/她的数字选择。我需要检查数字是在1-39之间,用户输入了7个有效数字。我想以用户在控制台中将它们写入一行字符串的方式执行此操作,并且程序找到任何空格,逗号或其他非数字字符并忽略它们。其余的彩票号码应存储在整数数组中,不包含任何重复项。我想从字符串搜索整数并将它们存储在数组中
我目前的版本非常糟糕,因为如果用户编写例如数字之间有2个空格。
Console.WriteLine("Choose 7 numbers (1-39) by pressing ENTER after every number:");
string userRow = Console.ReadLine();
int[] userLottery = new int[7];
for(int i = 0; i < userLottery.Length; i++)
{
userLottery = userRow.Split(',', '.', ' ').Select(x => int.Parse(x)).ToArray();
if(userLottery[i] > 7)
{
Array.Resize(ref userLottery, 7);
}
}
我想以更方便的方式替换目前的方式,其中用户错误的数量不会影响程序。如果用户写入多个空格,则会发生错误。
我试图建立正则表达式来处理这些情况,但我不能用它来将它们存储到数组中。
string userChoice = Console.ReadLine();
MatchCollection userNumbers = Regex.Matches(userChoice, @"\d+");
int[] userRow;
for(int i = 0; i < userNumbers.Count; i++)
{
userRow[i] = userNumbers[i].Value;
}
,说字符串不能转换成int [] ...
所以它的工作原理,但脆:做什么,你告诉用户下面?什么是问题? –
你的具体问题是什么? – Coops
我想以更方便的方式替换我目前的用户错误数量不会影响程序的方式。如果用户写入多个空格,则会发生错误。并 – johnnyCasual